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 pageView左右循环滑动

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

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

PageView * pageView = PageView::create();  //新建 pageView->setContentSize(Size(240.0f, 130.0f));  /...
  • x1426096761
  • x1426096761
  • 2016年02月10日 13:35
  • 1751

cocos3.x PageView代码

  • 2014年11月27日 01:02
  • 67KB
  • 下载

cocosStudio中使用PageView,ListView和ScrollView

晚上吃东西好像吃坏肚子了,。但是技术还要继续研究。最近工作中要使用CocosStudio做界面,好吧,不管对他有什么偏见,学习一下吧。这里主要记录一下三个控件的使用和说明。就是ScrollView,L...
  • shi_weihappy
  • shi_weihappy
  • 2015年01月12日 00:11
  • 4417

cocos2d js 3.2PageView的简单使用

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

quick下Cocos Studio PageView左右循环滑动实现

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

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
  • 2628

循环的pageview

在平常偶尔能看到一些前辈的优秀的代码,但是一直苦于没有地方保存,之后我就把它放到这里保存着 1 cocos2dx 循环翻页的pageview。 引擎中提供的pageview没有循环的功能,这个类实现了...
  • u011389577
  • u011389577
  • 2016年07月06日 10:05
  • 832

cocos2dx - 控件扩展之pageview循环显示(转)

。。。
  • legend18
  • legend18
  • 2016年02月16日 11:13
  • 250

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

上周在使用Cocos2dx 3.10游戏引擎的时候发现一个问题,pageView中的addEventListenerPageView函数怎么也监听不到,因为我想在滑动的时候监听到当前的是第几个page...
  • CN_DS
  • CN_DS
  • 2016年10月17日 10:06
  • 1784
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Cocos2dx:实现游戏关卡PageView方式(一)
举报原因:
原因补充:

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