Cocos2dx:实现游戏关卡PageView方式(一)

原创 2016年04月20日 19:00:49

PageView实现游戏关卡:实现类似android平台下的viewpager

#ifndef __LevelLayer_SCENE_H__
#define __LevelLayer_SCENE_H__

#include "cocos2d.h"
#include "ui/CocosGUI.h"
#include "LevelBaseLayer.h"


USING_NS_CC;
using namespace cocos2d;
using namespace ui;

class WorldBaseLayer;

class LevelLayer : public Layer
{
public:
    static cocos2d::Scene* createScene();
    
    LevelLayer();
    ~LevelLayer();
    
    virtual bool init() override;

    void pageViewEvent(Ref* pSender, PageViewEventType type);
    
    CREATE_FUNC(LevelLayer);
  

    
private:

};

#endif // __LevelLayer_SCENE_H__

#include "LevelLayer.h"

USING_NS_CC;

//关卡
LevelLayer::LevelLayer(){

};

LevelLayer::~LevelLayer(){


};

Scene* LevelLayer::createScene()
{
    // 'scene' is an autorelease object
    auto scene = Scene::create();
    
    // 'layer' is an autorelease object
    auto layer = LevelLayer::create();
    
    // add layer as a child to scene
    scene->addChild(layer);
    
    // return the scene
    return scene;
}


bool LevelLayer::init()
{
    if ( !Layer::init() )
    {
        return false;
    }
    
    scheduleUpdate();
    
    Size visibleSize = Director::getInstance()->getVisibleSize();
    Vec2 origin = Director::getInstance()->getVisibleOrigin();
    Size winSize = Director::getInstance()->getWinSize();
    
    PageView *pageView=PageView::create();
    pageView->setTouchEnabled(true);
    pageView->setSize(Size(winSize.width, winSize.height));
    pageView->setPosition(Point(0,0));
    
    //创建4个page
    for (int i=0; i<4; i++) {
        Layout* layout = Layout::create();
        layout->setSize(Size(winSize.width, winSize.height));
        
        ImageView* imageView = ImageView::create(StringUtils::format("world_map.jpg"));
        imageView->setScale9Enabled(true);
        imageView->setSize(Size(400, 400));
        imageView->setPosition(Point(layout->getContentSize().width / 2.0f, layout->getContentSize().height / 2.0f));
        layout->addChild(imageView);
        
        Text* label = Text::create(StringUtils::format("page %d", i), "fonts/Marker Felt.ttf", 30);
        label->setColor(Color3B(192, 192, 192));
        label->setPosition(Point(layout->getContentSize().width / 2.0f, layout->getContentSize().height / 2.0f));
        layout->addChild(label);
        
        pageView->addPage(layout);
        
    }
    pageView->addEventListenerPageView(this, pagevieweventselector(LevelLayer::pageViewEvent));
    
    this->addChild(pageView);

    
    return true;
}


void LevelLayer::pageViewEvent(Ref* pSender, PageViewEventType type){
    
    switch (type) {
        case PAGEVIEW_EVENT_TURNING:
        {
            PageView* pageView = dynamic_cast<PageView*>(pSender);
            log("pageView->getCurPageIndex() = %ld",pageView->getCurrentPageIndex() + 1);
        }
            break;
            
            
        default:
            break;
    }
}







推荐使用这种方式,毕竟是原生的嘛,后文也会介绍另外一种方式。



版权声明:本文为博主原创文章,未经博主允许不得转载。

cocos2d-x v3.10 lua PageView测试实例

cocos2d-x v3.10 lua PageView turning消息响应有问题,搜索之后发现了解决方案 http://blog.csdn.net/eijnew/article/details...

【cocos2d-x 3.5】Lua 加载cocostudio的PageView

local pageView = panel_main:getChildByName("PageView_1") local function pageViewEvent(sender, eventT...

cocos2d-x v3.10之ccui.PageView 翻页实现

---pageView     local page=ccui.PageView:create()     for i=1,8 do ---创建layout,内容添加到l...
  • sung26
  • sung26
  • 2016年05月11日 16:45
  • 2343

cocos2d-x pageView左右循环滑动

现项目中武将信息显示采用了PageView控件, 每一页显示6个武将信息, 游戏中武将数量可以为0~n, 如果一次性将所有武将创建出来显示效率可想而知; 所以有了PageView动态刷新并左右循环滑...

luabinding 中用Scrollview实现pageview的翻页效果

在开发聊天系统的表情界面时,首先想到的是pageview这样可以直接打到滑动时可以将整个表情界面滑动,但是目前pageview的监听事件的状态只有滚动一种状态,这样的如果要实现在页面滚动的情状下,即使...

cocos2d-x3.3 PageView常用成员函数

PageView * pageView = PageView::create();  //新建 pageView->setContentSize(Size(240.0f, 130.0f));  /...

Coco2dx 3.10 PageView 中addEventListenerPageView函数不起作用的解决方法

上周在使用Cocos2dx 3.10游戏引擎的时候发现一个问题,pageView中的addEventListenerPageView函数怎么也监听不到,因为我想在滑动的时候监听到当前的是第几个page...
  • CN_DS
  • CN_DS
  • 2016年10月17日 10:06
  • 1585

升级到cocos2d-x 3.10之后被遗忘的ccui.PageView.pageTurningEvent()

升级到cocos2d-x 3.10之后被遗忘的ccui.PageView.pageTurningEvent()
  • eijnew
  • eijnew
  • 2016年05月03日 19:34
  • 3053

cocos2d js 3.2PageView的简单使用

PageView在GUITest中可以看到相关的示例代码,简单的使用代码如下: var PageViewScene = cc.Scene.extend({ pageView : null, pa...
  • a102111
  • a102111
  • 2015年02月11日 18:30
  • 6820

cocosStudio中使用PageView,ListView和ScrollView

晚上吃东西好像吃坏肚子了,。但是技术还要继续研究。最近工作中要使用CocosStudio做界面,好吧,不管对他有什么偏见,学习一下吧。这里主要记录一下三个控件的使用和说明。就是ScrollView,L...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Cocos2dx:实现游戏关卡PageView方式(一)
举报原因:
原因补充:

(最多只允许输入30个字)