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动态刷新并左右循环滑...

使用cocos-2dx 3.x 封装的PageView

直接上代码: HelloWorldScene.cpp #include "HelloWorldScene.h" USING_NS_CC; #define COIN_WIDTH 212 //...

【玩转cocos2d-x之十五】关卡选择的设计

这节介绍一下游戏中帮助界面和关卡选择的设计,其实都是一样的,关键在于美工。这里采用自定义TableView层来实现。 1.导入头文件和设定空间 因为TableView相关的类是在扩展包里面,所...

解决cocos2dx 3.12版本使用PageView调用addEventListener函数,参数不明问题

你是否遇到了在使用PageView,调用addEventListner方法时,却出现查询到多个方法,编译器无法确定使用哪个方法,从而程序不能正确运行。这个问题困扰了我很久。 最后想到了一个方法,非常...

cocos2dx关卡选择界面设计

重点内容 做游戏时候经常用到关卡选择,写了个关卡选择界面逻辑类,关卡解锁,关卡类型显示,打过的关卡星级评定,一共六大关,每个大关10个小关,ui使用cocostudio编辑,代码如下: Level...

Cocos2dx:实现游戏关卡ScrollView方式(二)

今天我们实现关卡的选择是使用ScrollView这个类。当然还有一些其他的方法,比如使用page view也可以,见上文。先说下整体的思路,ScrollView这个类是继承自CCLayer的,本身的触...

cocosStudio中使用PageView,ListView和ScrollView

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

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

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

cocos2d js-3.2 PageView的简单使用

PageView在GUITest中可以看到相关的示例代码,简单的使用代码如下: [javascript] view plaincopy var Pa...

Cocos2d-x3.3Final(8)PageView常用成员函数(C++)

PageView * pageView = PageView::create(); //新建 pageView->setContentSize(Size(240.0f, 130.0f)); ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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