首页 > 代码库 > Cocos2d-x3.2 LayerMultiplex使用说明
Cocos2d-x3.2 LayerMultiplex使用说明
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, 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, 200, 100))); auto winSize = Director::getInstance()->getWinSize(); auto label1 = Label::createWithBMFont("bitmapFontTest3.fnt", "MainLayer"); auto item1 = MenuItemLabel::create(label1, 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); }
Cocos2d-x3.2 LayerMultiplex使用说明
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。