cocos2dx 在多场景切换中,生命周期打印的效果如下:
从 MyScene 场景进入,切换到 HelloWorld 场景,再推出 HelloWorld 场景,流程图(见附件,,,,不知道怎么上传图片,不能粘贴图,郁闷。。。)
打印 log 如下,
MyScene 代码: MyScene::MyScene() { CCLog("wangss------------->MyScene"); } MyScene::~MyScene() { CCLog("wangss------------->~~MyScene"); } void MyScene::onEnter() { CCLog("wangss------------->onEnter"); Layer::onEnter(); } void MyScene::onEnterTransitionDidFinish() { CCLog("wangss------------->onEnterTransitionDidFinish"); } void MyScene::onExit() { CCLog("wangss------------->onExit"); Layer::onExit(); } void MyScene::onExitTransitionDidStart() { CCLog("wangss------------->onExitTransitionDidStart"); } void MyScene::cleanup() { CCLog("wangss------------->cleanup"); } Scene* MyScene::createScene() { CCLog("wangss------------->createScene"); auto scene = Scene::create(); auto layer = MyScene::create(); scene->addChild(layer); return scene; } bool MyScene::init() { CCLog("wangss------------->init"); if (!Layer::init()) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); // spriteTest(visibleSize); // labelTest(visibleSize); // menuTest(visibleSize); // languageTest(visibleSize); // scheduleTest(visibleSize); // scaleNineSpriteTest(visibleSize); // shujujiegouTest(visibleSize); // actionTest(visibleSize); // actionCallBackTest(visibleSize); // frameAnimationTest(visibleSize); // actionEaseTest(visibleSize); // progressActionTest(visibleSize); lifeCycleTest(visibleSize); return true; } HelloWorld 代码: HelloWorld::HelloWorld() { CCLog("wangss------HelloWorld------->HelloWorld"); } HelloWorld::~HelloWorld() { CCLog("wangss------HelloWorld------->~~HelloWorld"); } void HelloWorld::onEnter() { CCLog("wangss------HelloWorld------->onEnter"); Layer::onEnter(); } void HelloWorld::onEnterTransitionDidFinish() { CCLog("wangss------HelloWorld------->onEnterTransitionDidFinish"); } void HelloWorld::onExit() { CCLog("wangss------HelloWorld------->onExit"); Layer::onExit(); } void HelloWorld::onExitTransitionDidStart() { CCLog("wangss------HelloWorld------->onExitTransitionDidStart"); } void HelloWorld::cleanup() { CCLog("wangss------HelloWorld------->cleanup"); } Scene* HelloWorld::createScene() { CCLog("wangss------HelloWorld------->createScene"); // ‘scene‘ is an autorelease object auto scene = Scene::create(); // ‘layer‘ is an autorelease object auto layer = HelloWorld::create(); // add layer as a child to scene scene->addChild(layer); // return the scene return scene; }
11-02 15:09:40.290: D/cocos2d-x debug info(23066): wangss------------->createScene
11-02 15:09:40.300: D/cocos2d-x debug info(23066): wangss------------->MyScene
11-02 15:09:40.300: D/cocos2d-x debug info(23066): wangss------------->init
11-02 15:09:40.320: D/cocos2d-x debug info(23066): wangss------------->onEnter
11-02 15:09:40.320: D/cocos2d-x debug info(23066): wangss------------->onEnterTransitionDidFinish
11-02 15:09:43.640: D/cocos2d-x debug info(23066): wangss------HelloWorld------->createScene
11-02 15:09:43.640: D/cocos2d-x debug info(23066): wangss------HelloWorld------->HelloWorld
11-02 15:09:43.640: D/cocos2d-x debug info(23066): wangss------HelloWorld------->init
11-02 15:09:43.760: D/cocos2d-x debug info(23066): wangss------------->onExitTransitionDidStart
11-02 15:09:43.760: D/cocos2d-x debug info(23066): wangss------HelloWorld------->onEnter
11-02 15:09:44.940: D/cocos2d-x debug info(23066): wangss------------->onExit
11-02 15:09:44.940: D/cocos2d-x debug info(23066): wangss------HelloWorld------->onEnterTransitionDidFinish
11-02 15:09:44.940: D/cocos2d-x debug info(23066): wangss------------->cleanup
11-02 15:09:44.940: D/cocos2d-x debug info(23066): wangss------------->~~MyScene
11-02 15:09:46.220: D/cocos2d-x debug info(23066): wangss------HelloWorld------->onExit
11-02 15:09:46.220: D/cocos2d-x debug info(23066): wangss------HelloWorld------->cleanup
11-02 15:09:46.220: D/cocos2d-x debug info(23066): wangss------HelloWorld------->~~HelloWorld