在多个场景切换时候,场景的生命周期会更加复杂。这一节我们介绍一下场景切换生命周期。
多个场景切换时候分为几种情况:
情况1,使用pushScene函数从实现GameScene场景进入SettingScene场景。
情况2,使用replaceScene函数实现从GameScene场景进入SettingScene场景。
情况3,使用popScene函数从实现SettingScene场景回到GameScene场景。
我们参考GameScene重写SettingScene的中几个生命周期函数,代码如下:
- function SettingScene:ctor()
- -- self.visibleSize = cc.Director:getInstance():getVisibleSize()
- cclog("SettingScene init")
- --场景节点事件处理
- local function onNodeEvent(event)
- if event == "enter" then
- self:onEnter()
- elseif event == "enterTransitionFinish" then
- self:onEnterTransitionFinish()
- elseif event == "exit" then
- self:onExit()
- elseif event == "exitTransitionStart" then
- self:onExitTransitionStart()
- elseif event == "cleanup" then
- self:cleanup()
- end
- end
- self:registerScriptHandler(onNodeEvent)
- end
- function SettingScene:onEnter()
- cclog("SettingScene onEnter")
- end
- function SettingScene:onEnterTransitionFinish()
- cclog("SettingScene onEnterTransitionFinish")
- end
- function SettingScene:onExit()
- cclog("SettingScene onExit")
- end
- function SettingScene:onExitTransitionStart()
- cclog("SettingScene onExitTransitionStart")
- end
- function SettingScene:cleanup()
- cclog("SettingScene cleanup")
- end
1、情况1时候,它的调用顺序如图所示。
情况1生命周期事件顺序
2、情况2时候,它的调用顺序如下图所示,从图中可见与图6-8不同的是多出GameScene中cleanup事件,这也说明replaceScene函数会释放场景对象。
生命周期事件顺序
3、情况3时候,它的调用顺序如下图所示,从图中可见popScene函数时候触发SettingScene的cleanup事件,这说明popScene函数会释放SettingScene场景对象,当回到GameScene场景时候并不会触发init事件,而是触发enter事件。
情况3生命周期事件顺序
更多内容请关注最新Cocos图书《Cocos2d-x实战:Lua卷——Cocos2d-lua开发》
本书交流讨论网站:http://www.cocoagame.net欢迎加入Cocos2d-x技术讨论群:257760386
更多精彩视频课程请关注智捷课堂Cocos课程:http://v.51work6.com智捷课堂现推出Cocos会员,敬请关注:http://v.51work6.com/courseInfoRedirect.do?action=netDetialInfo&courseId=844465&categoryId=0
《Cocos2d-x实战 Lua卷》现已上线,各大商店均已开售:
京东:http://item.jd.com/11659697.html
欢迎关注智捷iOS课堂微信公共平台,了解最新技术文章、图书、教程信息
相关推荐
8. **网络通信**:如果源码包含联网功能,可以了解如何在Cocos2d-x中实现网络请求,实现多人在线游戏或同步游戏状态。 9. **性能优化**:查看源码中关于性能优化的技巧,如减少不必要的计算、利用缓存、优化渲染等...
5. **节点和场景管理**:在Cocos2d-x中,游戏由一系列节点(如Sprite、Label、Layer等)组成,这些节点构成了场景。你可以使用Lua创建和管理这些节点,例如创建一个新的精灵,添加到场景中,或者改变其位置、大小、...
5. **资源管理**:Cocos2d-x 包含了图片、音频、字体等资源的加载和管理功能,简化了资源的生命周期管理。 6. **性能优化**:通过纹理 atlases 和批处理技术,提高了图像渲染的效率,减少了内存占用。 7. **脚本...
2. **初始化和生命周期**:了解如何在Cocos2d-x中启动游戏,以及游戏对象的生命周期管理。 3. **场景和层的管理**:学习如何创建和切换场景(Scene),以及如何在场景中添加和管理层(Layer)。 4. **精灵和动画**...
cocos2d-x是一款跨平台的2D游戏开发框架,广泛应用于iOS、Android以及Windows等多个操作系统。它以其高效、易学、功能强大的特性,吸引了众多游戏开发者。 在Android游戏开发中,cocos2d-x提供了丰富的API和工具,...
3. **改进的内存管理**:Cocos2d-x3.0采用了一种新的内存管理系统,优化了对象生命周期管理和内存分配,减少了内存泄漏和不必要的内存消耗。 4. **多平台支持**:作为一款跨平台框架,Cocos2d-x3.0支持iOS、Android...
在cocos2d-x中,场景是游戏画面的基本单元,包含了游戏的所有可见元素。 3. `main.cpp`:这是C++应用的主入口文件,包含`main()`函数。在这个例子中,`main()`函数负责初始化cocos2d-x环境,并调用`AppDelegate::...
2. **Lua语言基础**:Lua具有简洁的语法和强大的元编程能力,是Cocos2d-x中常用的脚本语言。学习配套代码时,需要理解Lua的基本数据类型(如数字、字符串、表、布尔值和函数)、控制结构(if-else、for、while等)、...
脚本系统在Cocos2d-x中起着重要作用,尤其是对于快速原型开发和降低开发难度。书里会教授如何使用Lua或JavaScript来编写游戏逻辑,以及如何与C++代码进行交互。这将帮助开发者充分利用脚本语言的灵活性和易读性。 ...
在cocos2d-x中,主要由C++编写,可能包括以下组件: 1. 主程序类(App Delegate):游戏的入口点,负责初始化引擎、加载资源、处理应用生命周期事件。 2. 场景(Scene)类:游戏的不同阶段,如主菜单、游戏关卡、...
在实际开发中,我们还需要了解如何创建和管理`CCScene`,这是cocos2d-x中的基本场景单元。每个`CCScene`可以包含一个或多个`CCLayer`,`CCLayer`则可以包含各种游戏对象如精灵(CCSprite)、菜单(CCMenu)等。通过`...
这篇文章将详细介绍如何在Cocos2d-x中进行Lua与C++的绑定,以便于开发者利用两者的优点进行游戏开发。 ### Lua与C++交互原理 1. **tolua++工具**:Lua和C++之间的交互主要依赖于tolua++这样的绑定工具。tolua++...
在cocos2d-x中,我们可以监听和响应各种输入事件,包括触摸、键盘和摇杆等。在“HelloWorldTouch”中,你可能需要创建一个Scene,然后在其上添加一个Layer,通过重写`onTouchEvent`或`onTouchesBegan/Moved/Ended`等...
结合Cocos2d-x for XNA,开发者可以利用XNA的音频管理、游戏输入和生命周期管理等特性,同时利用Cocos2d-x的跨平台优势,实现一次编写,多平台运行。这使得开发者能够更容易地将游戏移植到不同的设备上,扩大市场...
通过研究这个源码,新手可以了解cocos2d-x的类结构、对象生命周期、动画机制、物理引擎应用等基础知识。此外,还可以学习如何使用cocos2d-x的精灵(Sprite)、动作(Action)和层(Layer)等组件构建游戏世界,以及...
本笔记将深入探讨Cocos2D-X中的内存管理策略,主要包括对象生命周期、内存分配与释放、引用计数以及智能指针的使用。 1. 对象生命周期:在Cocos2D-X中,每个对象都有其创建、使用和销毁的生命周期。当你创建一个...
1. **场景(Scene)与层(Layer)**:在cocos2d-x中,游戏逻辑通常被组织成多个场景,每个场景可以包含多个层。场景是游戏的主舞台,而层则是场景中的独立部分,负责处理特定的游戏功能。例如,我们可以创建一个`...
在cocos2d-x 3.0中创建项目是一个重要的步骤,这标志着你的游戏或应用开发的起点。Cocos2d-x 是一个跨平台的2D游戏开发框架,支持多种编程语言,包括C++和Lua。以下是使用Cocos2d-x 3.0创建项目的详细步骤: 1. **...
在游戏开发领域,cocos2d-x是一个广泛应用的2D游戏开发框架,它基于C++,同时提供了Lua和JavaScript的绑定,支持跨平台开发,覆盖了iOS、Android、Windows等多个平台。本项目是利用cocos2d-x引擎制作的一款经典游戏...
1. **基本架构**:cocos2d-x的核心组件包括Director(导演)、Scene(场景)、Layer(层)、Sprite(精灵)等,它们构成了游戏的基本结构。通过这些组件,开发者可以构建复杂的交互式游戏。 2. **渲染系统**:cocos...