`

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

阅读更多

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

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

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

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

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

 

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

 

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. bool Setting::init()  
  2. {             
  3.     if( !Layer::init() )  
  4.     {  
  5.          returnfalse;  
  6.     }  
  7.    
  8.     log("Settinginit");  
  9.     ......  
  10.     returntrue;  
  11. }  
  12.    
  13. void Setting::onEnter()  
  14. {  
  15.     Layer::onEnter();  
  16.     log("SettingonEnter");  
  17. }  
  18.    
  19. void Setting::onEnterTransitionDidFinish()  
  20. {  
  21.     Layer::onEnterTransitionDidFinish();  
  22.     log("SettingonEnterTransitionDidFinish");  
  23. }  
  24.    
  25. void Setting::onExit()  
  26. {  
  27.     Layer::onExit();  
  28.     log("SettingonExit");  
  29. }  
  30.    
  31. void Setting::onExitTransitionDidStart()  
  32. {  
  33.     Layer::onExitTransitionDidStart();  
  34.     log("SettingonExitTransitionDidStart");  
  35. }  
  36.    
  37. void Setting::cleanup()  
  38. {  
  39.     Layer::cleanup();  
  40.     log("Settingcleanup");  
  41. }  

 

 

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

 

 

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

 

 

 

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

 

更多内容请关注Cocos2d-x系列图书《Cocos2d-x实战(卷Ⅰ):C++开发》
本书交流讨论网站:http://www.cocoagame.net
欢迎加入cocos2d-x技术讨论群:257760386、327403678
 

 

 

 

分享到:
评论

相关推荐

    cocos2d-iphone-2.0.tar.gz

    4. **Scene Management**:通过CCDirector和CCScene类,开发者可以轻松管理游戏场景的切换和生命周期,实现游戏流程的控制。 5. **Box2D Physics Integration**:2.0版本集成了流行的Box2D物理引擎,使得开发者能够...

    cocos2d-x_学习文档

    在cocos2d-x的学习过程中,首先我们需要...在深入学习cocos2d-x的过程中,你需要掌握场景和层的概念,理解设备方向的处理,熟悉动作和事件系统,以及有效地管理和使用游戏资源,这些都是构建游戏基础架构的关键知识点。

    Cocos2d-x 3.x游戏开发实战源码

    2. **初始化和生命周期**:了解如何在Cocos2d-x中启动游戏,以及游戏对象的生命周期管理。 3. **场景和层的管理**:学习如何创建和切换场景(Scene),以及如何在场景中添加和管理层(Layer)。 4. **精灵和动画**...

    cocos2d-x 3.0创建项目

    在cocos2d-x 3.0中创建项目是一个重要的步骤,这标志着你的游戏或应用开发的起点。Cocos2d-x 是一个跨平台的2D游戏开发框架,支持多种编程语言,包括C++和Lua。以下是使用Cocos2d-x 3.0创建项目的详细步骤: 1. **...

    UIView和Coco2d-x场景之间的相互切换

    一个Cocos2d-x场景是一个包含多个层(Layer)、精灵(Sprite)和其他游戏对象的容器,这些对象可以一起移动、旋转和缩放,以实现游戏中的动画效果。Cocos2d-x使用自己的渲染管线,这与UIKit完全不同。 将`UIView`和...

    cocos2d-x 自学文档

    cocos2d-x支持屏幕方向的切换,通过设置设备方向来适配不同设备。schedule方法用于定时执行任务,可以按固定间隔或帧率调用指定的函数。系统语言的检测和处理可以帮助游戏适应不同语言环境。 十二、音乐音效 cocos...

    cocos2d-x案例开发大全-第2章-cocos2dx3.3实现

    在这个例子中,你可能会学习到如何在`AppDelegate`中初始化Cocos2d-x引擎,设置渲染窗口,加载第一个场景,以及处理应用的生命周期事件,如暂停、恢复、退出等。 在`AppDelegate.cpp`中,`...

    Cocos2d-x 中使用多线程

    在Cocos2d-x游戏中,多线程常用于以下场景: - 资源加载:如预加载图片、音频文件,避免阻塞主渲染线程。 - 网络通信:如处理网络请求,避免长时间阻塞主线程影响游戏体验。 - AI计算:复杂AI逻辑可以放在单独的线程...

    cocos2d-x_2.1.1_EN_API_HTML版

    4. 资源管理:如CCFileUtils和CCDirector,前者负责加载和管理游戏资源,后者管理游戏的生命周期,如帧率控制、场景切换等。 5. 物理引擎:cocos2d-x 2.1.1集成了Box2D物理引擎,通过CCPhysicsNode和CCPhysicsBody...

    Cocos2d-x高级开发教+捕鱼源码

    Cocos2d-x是一款流行的开源游戏开发框架,广泛用于创建2D游戏、演示和其他互动内容。这个资源包,"Cocos2d-x高级开发教+捕鱼源码",旨在帮助初学者深入理解Cocos2d-x框架,并通过实际的捕鱼游戏源码来实践所学知识。...

    cocos2dx lua核心编程(第二版)配套代码

    10. **跨平台开发**:Cocos2d-x的跨平台特性使得同一套代码可以运行在iOS、Android、Windows等多个平台上。了解不同平台的适配策略和注意事项,有助于构建更广泛适用的游戏。 总的来说,《Cocos2d-x之Lua核心编程...

    Cocos2D权威指南的VerticalShootingGame小游戏用Cocos2D-X实现的Android项目代码

    9. **生命周期管理**:了解如何在场景切换时正确地销毁和创建节点,以避免内存泄漏。 10. **发布和调试**:最后,学习如何将游戏打包成APK,并在真实设备或模拟器上进行测试和调试。 通过研究这个...

    Cocos2D-X开发学习笔记-动作管理类的使用示例

    Cocos2D-X是一款流行的开源游戏开发框架,广泛应用于2D游戏开发,它基于C++,并且支持多种平台。在Cocos2D-X中,动作(Actions)是游戏动画和交互性的重要组成部分,它们允许开发者控制游戏对象的行为,如移动、旋转...

    cocos2d-x权威指南前三章-第三章.Cocos2D-x_中的核心类.pdf

    导演类负责管理游戏的生命周期,控制场景切换、渲染循环以及事件处理,确保游戏按照预设的规则平稳运行。 #### 场景(CCScene) **场景(CCScene)**代表游戏的一个独立部分,可以是一个关卡或一个特定的游戏界面...

    cocos2d-x3.3 坦克大战

    【cocos2d-x3.3 坦克大战】是一个使用Cocos2d-x 3.3版本开发的项目,旨在实现经典游戏坦克大战。Cocos2d-x是一个广泛使用的开源游戏开发框架,它基于C++,同时支持Lua和JavaScript进行游戏逻辑编程。这个项目表明...

    cocos2d-js离线API

    Cocos2d-js的ParticleSystem类提供了一种创建粒子效果的方法,如火焰、烟雾、雪花等,可以轻松调整粒子的生命周期、速度、颜色等属性,创建出各种视觉特效。 六、音频与音乐 Cocos2d-js支持音频播放,包括背景音乐...

    Cocos2D-X开发学习笔记-渲染框架之导演类的使用示例

    在Cocos2D-X中,导演类(Director)扮演着至关重要的角色,它是整个渲染框架的核心,负责管理场景(Scene)、层(Layer)、精灵(Sprite)等游戏对象的生命周期,以及控制游戏的渲染循环。本篇将深入探讨导演类的...

    cocos2d-iphone 游戏源码

    这个“cocos2d-iphone 游戏源码”压缩包可能包含了使用Cocos2d-iPhone框架开发的一个或多个游戏的完整源代码,这对于学习游戏开发、理解框架的内部工作原理以及如何优化性能具有极高的价值。 首先,Cocos2d-iPhone...

    知易Cocos2D-iPhone代码示例源码1-8

    在Cocos2D-iPhone中,每个游戏或应用都是由多个场景(CCScene)组成的。源码中的“1”可能涵盖如何创建和切换场景,例如使用` CCDirector`来初始化和运行场景,以及如何在不同场景之间进行平滑过渡。 2. **精灵与...

Global site tag (gtag.js) - Google Analytics