首页 > 代码库 > Cocos2d-x_3.2 Demo ----------TestScene类
Cocos2d-x_3.2 Demo ----------TestScene类
1 class TestScene : public Scene 2 { 3 public: 4 TestScene(bool bPortrait = false, bool physics = false); 5 virtual void onEnter() override;// 进入场景事调用 6 7 virtual void runThisTest() = 0;// 运行场景需重写 8 }; 9 10 // C++ 1111 12 #define CL(__className__) [](){ return __className__::create();}13 #define CLN(__className__) [](){ auto obj = new __className__(); obj->autorelease(); return obj; }
这个类主要提供接口作用,主要是在菜单项点击后运行相应的场景。
1 /* 分别初始化物理层和普遍层 */ 2 TestScene::TestScene(bool bPortrait, bool physics/* = false*/) 3 { 4 if (physics) 5 { 6 #if CC_USE_PHYSICS 7 TestScene::initWithPhysics(); 8 #else 9 Scene::init();10 #endif11 }12 else13 {14 Scene::init();15 }16 }
看注释估计读者都已经看懂了,所以这里也无需解释了。
1 void TestScene::onEnter() 2 { 3 Scene::onEnter(); 4 5 // 添加回主菜单的菜单项 6 TTFConfig ttfConfig("fonts/arial.ttf", 20); 7 auto label = Label::createWithTTF(ttfConfig,"MainMenu"); 8 auto menuItem = MenuItemLabel::create(label, testScene_callback ); 9 10 auto menu = Menu::create(menuItem, nullptr);11 menu->setPosition( Vec2::ZERO );12 menuItem->setPosition( Vec2( VisibleRect::right().x - 50, VisibleRect::bottom().y + 25) );13 14 addChild(menu, 1);15 }
VisibleRect类请看这里http://www.cnblogs.com/studweijun/p/3973600.html
这个函数主要是写在测试的每个场景当中显示“MainMenu”其实就是返回主菜单,
看到上图右下角的MainMenu了吧,接下来我们来看一下他是怎么返回的(回调函数):
1 void testScene_callback(Ref *sender ) 2 { 3 auto scene = Scene::create(); 4 5 auto layer = new TestController(); 6 scene->addChild(layer); 7 layer->release(); 8 9 Director::getInstance()->replaceScene(scene);10 11 cocostudio::ArmatureDataManager::destroyInstance();// 销毁骨骼动画数据12 }
TestCotroller类请看这里http://www.cnblogs.com/studweijun/p/3973555.html
实现的很简单,新建场景,然后TestController类又重新new了一次,再替换掉场景。
Cocos2d-x_3.2 Demo ----------TestScene类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。