(原创)cocos2d-x 3.0 示例代码分析5:testBasic
今天我们看下示例里面的场景基类~~直接上代码
// testBasic.h // 场景基类 #ifndef _TEST_BASIC_H_ #define _TEST_BASIC_H_ #include "cocos2d.h" #include "VisibleRect.h" USING_NS_CC; class TestScene : public Scene // 继承scene { public: // 构造函数 TestScene(bool bPortrait = false, bool physics = false); virtual void onEnter() override; // 重载:onEnter virtual void runThisTest() = 0; // 纯虚函数,用于运行场景 }; // C++ 11 // 定义两个宏 // CL:调用create方法创建对象并返回 // CLN:通过new方法创建对象并返回 #define CL(__className__) [](){ return __className__::create();} #define CLN(__className__) [](){ auto obj = new __className__(); obj->autorelease(); return obj; } #endif
// testBasic.cpp // 星月倾心贡献~~~~ #include "testBasic.h" #include "controller.h" #include "extensions/cocos-ext.h" #include "cocostudio/CocoStudio.h" TestScene::TestScene(bool bPortrait, bool physics/* = false*/) { // 构造函数中调用父类scene的init()方法 if (physics) { #if CC_USE_PHYSICS TestScene::initWithPhysics(); #else Scene::init(); #endif } else { Scene::init(); } } // 按钮标签的回调 void testScene_callback(Ref *sender ) { auto scene = Scene::create(); // 创建一个场景 auto layer = new TestController(); // 创建控制层 scene->addChild(layer); // 将层加入到场景中 layer->release(); // 因为是new的,所以需要手动释放 Director::getInstance()->replaceScene(scene); // 替换场景 cocostudio::ArmatureDataManager::destroyInstance(); // 销毁cocostudio的armature的实例 } // 进入场景 void TestScene::onEnter() { Scene::onEnter(); // 调用父类方法 //add the menu item for back to main menu TTFConfig ttfConfig("fonts/arial.ttf", 20); // 设置字体和大小 auto label = Label::createWithTTF(ttfConfig,"MainMenu"); // 创建一个标签 auto menuItem = MenuItemLabel::create(label, testScene_callback ); // 创建一个按钮标签 auto menu = Menu::create(menuItem, NULL); menu->setPosition( Point::ZERO ); menuItem->setPosition( Point( VisibleRect::right().x - 50, VisibleRect::bottom().y + 25) ); addChild(menu, 1); }
基类的场景还是很简单的,这里就不说了~
祝大家工作顺利,事业有成了,哈哈~~(小白:我喜欢~~)
作者使用 cocos2d-x 3.0 示例代码分析,未经作者允许,请勿转载!在此谢谢各位手下留情~~~
本文没有获得作者本人同意,不得转载,否则必追究相关责任。转载请注明出处!!~~