Cocos2d-x多场景切换生命周期

在多个场景切换时候场景的生命周期会更加复杂。这一节我们介绍一下场景切换生命周期。

多个场景切换时候分为几种情况

情况1使用pushScene函数从实现HelloWorld场景进入Setting场景。

情况2使用replaceScene函数实现从HelloWorld场景进入Setting场景。

情况3使用popScene函数从实现Setting场景回到HelloWorld场景。

 

我们参考HelloWorld重写Setting层的中几个生命周期函数代码如下

bool Setting::init()
{
    if( !Layer::init() )
    {
         returnfalse;
    }

    log("Settinginit");
    ......
    returntrue;
}

void Setting::onEnter()
{
    Layer::onEnter();
    log("SettingonEnter");
}

void Setting::onEnterTransitionDidFinish()
{
    Layer::onEnterTransitionDidFinish();
    log("SettingonEnterTransitionDidFinish");
}

void Setting::onExit()
{
    Layer::onExit();
    log("SettingonExit");
}

void Setting::onExitTransitionDidStart()
{
    Layer::onExitTransitionDidStart();
    log("SettingonExitTransitionDidStart");
}

void Setting::cleanup()
{
    Layer::cleanup();
    log("Settingcleanup");
}

 情况1时候它的调用顺序如下图所示。

 

情况2时候它的调用顺序如下图所示从图中可见与上面不同是多出HelloWorld中cleanup函数这也说明replaceScene函数会释放场景对象。

 

 

情况3时候它的调用顺序如下图所示从图中可见popScene函数时候调用Setting中cleanup函数这说明popScene函数会释放Setting场景对象当回到HelloWorld场景时候并不会调用init()函数而是调用onEnter函数。

更多内容请关注最新Cocos图书《Cocos2d-x实战 C++卷》
本书交流讨论网站http://www.cocoagame.net

更多精彩视频课程请关注智捷课堂Cocos课程http://v.51work6.com

欢迎加入Cocos2d-x技术讨论群257760386

《Cocos2d-x实战 C++卷》现已上线各大商店均已开售

京东http://item.jd.com/11584534.html

亚马逊http://www.amazon.cn/Cocos2d-x%E5%AE%9E%E6%88%98-C-%E5%8D%B7-%E5%85%B3%E4%B8%9C%E5%8D%87/dp/B00PTYWTLU

当当http://product.dangdang.com/23606265.html

互动出版网http://product.china-pub.com/3770734

《Cocos2d-x实战 C++卷》源码及样章下载地址

源码下载地址http://51work6.com/forum.php?mod=viewthread&tid=1155&extra=page%3D1 

样章下载地址http://51work6.com/forum.php?mod=viewthread&tid=1157&extra=page%3D1

欢迎关注智捷iOS课堂微信公共平台

 

时间: 2024-09-15 06:14:19

Cocos2d-x多场景切换生命周期的相关文章

Cocos2d-x Lua中多场景切换生命周期

在多个场景切换时候,场景的生命周期会更加复杂.这一节我们介绍一下场景切换生命周期.多个场景切换时候分为几种情况:情况1,使用pushScene函数从实现GameScene场景进入SettingScene场景.情况2,使用replaceScene函数实现从GameScene场景进入SettingScene场景.情况3,使用popScene函数从实现SettingScene场景回到GameScene场景.我们参考GameScene重写SettingScene的中几个生命周期函数,代码如下: func

Android横竖屏切换生命周期调用过程

问题描述 今天想熟悉下Android生命周期,尤其是横竖屏切换生命周期的调用过程.但是发现了一个问题:android4.0的切换效果:android2.2的切换效果:求解,Android从哪个版本开始,横竖屏切换效果开始改变.应该不是我的环境的问题吧. 解决方案 解决方案二:是说2.2调用的是onconfigurationchsnged吗?这不是你的环境问题,我不清楚以前版本是怎样的,但是在我看官方文档的时候它就是你说的4.0版本的那个样子了,也就是说,在横竖切换的时候会销毁原来的实例再重建.参

Cocos2d-x3.2 场景的生命周期

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 //GameScene.h   #include "cocos2d.h"   USING_NS_CC;   class GameScene : public cocos2d::Layer { public:     GameScene(void);     ~GameScene(void);           static coc

Android横竖屏幕切换生命周期详解

一.简介 二.代码 /activityLifeCycle_3Screen/AndroidManifest.xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.fry.activityLifeCycle_3Screen" android:versionCode="1" android:versionName="1.

Android Activity 横竖屏切换的生命周期_Android

前言 在开发中常要处理横竖屏切换,怎么处理先看生命周期 申明 Activity 横竖屏切换时需要回调两个函数 ,所以在此将这个两个函数暂时看成是Activity 横竖屏切换的生命周期的一部分,这两个函数如下 onSaveInstanceState(Bundle outState) :Activity 即将销毁时保存数据 onRestoreInstanceState(Bundle savedInstanceState) : Activity 重建或者恢复时候取出数据 横竖屏切换生命周期 1.启动程

Android开发入门(三)碎片简介 3.2 Fragment的生命周期

就像activities一样,fragments也有它们自己的生命周期.理解fragments的生命周期,可以使你在它们 被销毁的时候保存它们的实例,这样在它们重新被创建的时候,就能恢复它们之前的状态.下面的例子测试 了fragments的不同状态. 1. 创建一个Fragment的子类:Fragment1.java. public class Fragment1 extends Fragment { @Override public View onCreateView(LayoutInflat

DataSnap 2009 系列之三 (生命周期篇)

(生命周期篇) DataSnap 2009的服务器对象的生命周期依赖于DSServerClass组件的设置,当DSServer启动时从 DSServerClass组件读取LifeCycle属性的值. 注意:LifeCycle的值由于在启动时就已经读取 启动后再修改LifeCycle的值将没有任何效果,LifeCycle属性的值可以是以下三种字符串之一. 1.Session 该选项为默认设置,每个连接都会建立一个独立的服务器对象为客户端提供服务,服务器对象在连接关闭后释放,因此多个客户端访问的是不

实例讲解Android应用开发中Fragment生命周期的控制_Android

一.Fragment的生命周期初探 因为Fragment必须嵌入在Acitivity中使用,所以Fragment的生命周期和它所在的Activity是密切相关的. 如果Activity是暂停状态,其中所有的Fragment都是暂停状态:如果Activity是stopped状态,这个Activity中所有的Fragment都不能被启动:如果Activity被销毁,那么它其中的所有Fragment都会被销毁. 但是,当Activity在活动状态,可以独立控制Fragment的状态,比如加上或者移除F

Android的Fragment的生命周期各状态和回调函数使用_Android

回调函数 就像activities一样,fragments也有它们自己的生命周期.理解fragments的生命周期,可以使你在它们被销毁的时候保存它们的实例,这样在它们重新被创建的时候,就能恢复它们之前的状态. 流程: onAttach() 作用:fragment已经关联到activity,     这个是 回调函数 @Override public void onAttach(Activity activity) { super.onAttach(activity); Log.i("onAtt