LayerMultiplex是层的控制器类
使用如下
LayerMultiplexTest.h
//// LayerMultiplexTest.h// cpp4//// Created by 杜甲 on 10/13/14.////#ifndef __cpp4__LayerMultiplexTest__#define __cpp4__LayerMultiplexTest__#include "cocos2d.h"USING_NS_CC;class LayerMultiplexTest : public Layer{public: virtual bool init(); // there's no 'ID' in cpp,so we recommend returning the class instance pointer static cocos2d::Scene* scene(); // implement the "static node()" method manually CREATE_FUNC(LayerMultiplexTest); };class TestMainLayer : public Layercolor{ public: virtual bool init(); CREATE_FUNC(TestMainLayer); private: voID menuCallback1(cocos2d::Ref *sender); voID menuCallback2(cocos2d::Ref *sender);};class TestLayer1 : public Layercolor{ public: virtual bool init(); CREATE_FUNC(TestLayer1); voID menuCallback1(cocos2d::Ref *sender);};class TestLayer2 : public Layercolor{ public: virtual bool init(); CREATE_FUNC(TestLayer2); voID menuCallback1(cocos2d::Ref *sender);};#endif /* defined(__cpp4__LayerMultiplexTest__) */
LayerMultiplexTest.cpp
//// LayerMultiplexTest.cpp// cpp4//// Created by 杜甲 on 10/13/14.////#include "LayerMultiplexTest.h"Scene* LayerMultiplexTest::scene(){ // 'scene' is an autorelease object auto scene = Scene::create(); // 'layer' is an autorelease object LayerMultiplexTest *layer = LayerMultiplexTest::create(); // add layer as a child to scene scene->addChild(layer); // return the scene return scene;}bool LayerMultiplexTest::init(){ bool bRet = false; do { CC_BREAK_IF(!Layer::init()); auto mainLayer = TestMainLayer::create(); auto layer1 = TestLayer1::create(); auto layer2 = TestLayer2::create(); //将层放入LayerMultiplex中 auto layerMutiplex = LayerMultiplex::create(mainLayer,layer1,layer2,nullptr); addChild(layerMutiplex,0); bRet = true; } while (0); return bRet;}bool TestMainLayer::init(){ bool bRet = false; do { CC_BREAK_IF(!Layercolor::init()); auto winSize = Director::getInstance()->getWinSize(); auto label1 = Label::createWithBMFont("bitmapFontTest3.fnt","TestLayer 1"); auto item1 = MenuItemLabel::create(label1,CC_CALLBACK_1(TestMainLayer::menuCallback1,this)); auto label2 = Label::createWithBMFont("bitmapFontTest3.fnt","TestLayer 2"); auto item2 = MenuItemLabel::create(label2,CC_CALLBACK_1(TestMainLayer::menuCallback2,this)); auto menu = Menu::create(item1,item2,NulL); menu->alignItemsvertically(); menu->setposition(winSize / 2); addChild(menu); bRet = true; } while (0); return bRet;}voID TestMainLayer::menuCallback1(cocos2d::Ref *sender){ static_cast<LayerMultiplex *>(_parent)->switchTo(1); }voID TestMainLayer::menuCallback2(cocos2d::Ref *sender){ static_cast<LayerMultiplex *>(_parent)->switchTo(2);}bool TestLayer1::init(){ bool bRet = false; do { CC_BREAK_IF(!Layercolor::initWithcolor(color4B(100,200,100))); auto winSize = Director::getInstance()->getWinSize(); auto label1 = Label::createWithBMFont("bitmapFontTest3.fnt","MainLayer"); auto item1 = MenuItemLabel::create(label1,CC_CALLBACK_1(TestLayer1::menuCallback1,this)); auto menu = Menu::create(item1,NulL); menu->alignItemsvertically(); menu->setposition(winSize / 2); addChild(menu); bRet = true; } while (0); return bRet;}voID TestLayer1::menuCallback1(cocos2d::Ref *sender){ //返回 方法 static_cast<LayerMultiplex *>(_parent)->switchTo(0); }bool TestLayer2::init(){ bool bRet = false; do { CC_BREAK_IF(!Layercolor::initWithcolor(color4B(100,100,100))); auto winSize = Director::getInstance()->getWinSize(); auto label1 = Label::createWithBMFont("bitmapFontTest3.fnt",CC_CALLBACK_1(TestLayer2::menuCallback1,this)); auto menu = Menu::create(item1,NulL); menu->alignItemsvertically(); menu->setposition(winSize / 2); addChild(menu); bRet = true; } while (0); return bRet;}voID TestLayer2::menuCallback1(cocos2d::Ref *sender){ static_cast<LayerMultiplex *>(_parent)->switchTo(0); }
代码下载:http://download.csdn.net/detail/qqmcy/8031733 总结
以上是内存溢出为你收集整理的Cocos2d-x3.2 LayerMultiplex使用说明全部内容,希望文章能够帮你解决Cocos2d-x3.2 LayerMultiplex使用说明所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)