`

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

 
阅读更多

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

[html] view plaincopy
 
  1. function SettingScene:ctor()  
  2.    -- self.visibleSize = cc.Director:getInstance():getVisibleSize()  
  3.     cclog("SettingScene init")  
  4.     --场景节点事件处理  
  5.     local function onNodeEvent(event)  
  6.         if event == "enter" then  
  7.             self:onEnter()  
  8.         elseif event == "enterTransitionFinish" then  
  9.             self:onEnterTransitionFinish()  
  10.         elseif event == "exit" then  
  11.             self:onExit()  
  12.         elseif event == "exitTransitionStart" then  
  13.             self:onExitTransitionStart()  
  14.         elseif event == "cleanup" then  
  15.             self:cleanup()  
  16.         end  
  17.     end  
  18.   
  19.   
  20.     self:registerScriptHandler(onNodeEvent)  
  21. end  
  22.   
  23.   
  24.   
  25.   
  26. function SettingScene:onEnter()   
  27.     cclog("SettingScene onEnter")  
  28. end  
  29.   
  30.   
  31. function SettingScene:onEnterTransitionFinish()   
  32.     cclog("SettingScene onEnterTransitionFinish")  
  33. end  
  34.   
  35.   
  36. function SettingScene:onExit()   
  37.     cclog("SettingScene onExit")  
  38. end  
  39.   
  40.   
  41. function SettingScene:onExitTransitionStart()   
  42.     cclog("SettingScene onExitTransitionStart")  
  43. end  
  44.   
  45.   
  46. function SettingScene:cleanup()   
  47.     cclog("SettingScene cleanup")  
  48. 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
《Cocos2d-x实战 Lua卷》现已上线,各大商店均已开售:

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

欢迎关注智捷iOS课堂微信公共平台,了解最新技术文章、图书、教程信息
分享到:
评论

相关推荐

    《Cocos2d-x实战 Lua卷》源码.7z

    8. **网络通信**:如果源码包含联网功能,可以了解如何在Cocos2d-x中实现网络请求,实现多人在线游戏或同步游戏状态。 9. **性能优化**:查看源码中关于性能优化的技巧,如减少不必要的计算、利用缓存、优化渲染等...

    Cocos2d-x 使用Lua开发基础

    5. **节点和场景管理**:在Cocos2d-x中,游戏由一系列节点(如Sprite、Label、Layer等)组成,这些节点构成了场景。你可以使用Lua创建和管理这些节点,例如创建一个新的精灵,添加到场景中,或者改变其位置、大小、...

    cocos2d-1.0.1-x-0.10.0

    5. **资源管理**:Cocos2d-x 包含了图片、音频、字体等资源的加载和管理功能,简化了资源的生命周期管理。 6. **性能优化**:通过纹理 atlases 和批处理技术,提高了图像渲染的效率,减少了内存占用。 7. **脚本...

    cocos2d-x手机游戏开发

    cocos2d-x是一款跨平台的2D游戏开发框架,广泛应用于iOS、Android以及Windows等多个操作系统。它以其高效、易学、功能强大的特性,吸引了众多游戏开发者。 在Android游戏开发中,cocos2d-x提供了丰富的API和工具,...

    Cocos2d-x3.0正式版 练练看 源码

    3. **改进的内存管理**:Cocos2d-x3.0采用了一种新的内存管理系统,优化了对象生命周期管理和内存分配,减少了内存泄漏和不必要的内存消耗。 4. **多平台支持**:作为一款跨平台框架,Cocos2d-x3.0支持iOS、Android...

    cocos2d-x测试代码

    在cocos2d-x中,场景是游戏画面的基本单元,包含了游戏的所有可见元素。 3. `main.cpp`:这是C++应用的主入口文件,包含`main()`函数。在这个例子中,`main()`函数负责初始化cocos2d-x环境,并调用`AppDelegate::...

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

    2. **Lua语言基础**:Lua具有简洁的语法和强大的元编程能力,是Cocos2d-x中常用的脚本语言。学习配套代码时,需要理解Lua的基本数据类型(如数字、字符串、表、布尔值和函数)、控制结构(if-else、for、while等)、...

    Cocos2d-x 3.x游戏开发之旅_高清完整版

    脚本系统在Cocos2d-x中起着重要作用,尤其是对于快速原型开发和降低开发难度。书里会教授如何使用Lua或JavaScript来编写游戏逻辑,以及如何与C++代码进行交互。这将帮助开发者充分利用脚本语言的灵活性和易读性。 ...

    cocos2d-x《魔塔》中期(版本2.2.2)

    在cocos2d-x中,主要由C++编写,可能包括以下组件: 1. 主程序类(App Delegate):游戏的入口点,负责初始化引擎、加载资源、处理应用生命周期事件。 2. 场景(Scene)类:游戏的不同阶段,如主菜单、游戏关卡、...

    cocos2d-x_学习文档

    在实际开发中,我们还需要了解如何创建和管理`CCScene`,这是cocos2d-x中的基本场景单元。每个`CCScene`可以包含一个或多个`CCLayer`,`CCLayer`则可以包含各种游戏对象如精灵(CCSprite)、菜单(CCMenu)等。通过`...

    cocos2d-x,lua绑定详细操作步骤

    这篇文章将详细介绍如何在Cocos2d-x中进行Lua与C++的绑定,以便于开发者利用两者的优点进行游戏开发。 ### Lua与C++交互原理 1. **tolua++工具**:Lua和C++之间的交互主要依赖于tolua++这样的绑定工具。tolua++...

    cocos2d-x入门

    在cocos2d-x中,我们可以监听和响应各种输入事件,包括触摸、键盘和摇杆等。在“HelloWorldTouch”中,你可能需要创建一个Scene,然后在其上添加一个Layer,通过重写`onTouchEvent`或`onTouchesBegan/Moved/Ended`等...

    cocos2d-x-for-xna.zip

    结合Cocos2d-x for XNA,开发者可以利用XNA的音频管理、游戏输入和生命周期管理等特性,同时利用Cocos2d-x的跨平台优势,实现一次编写,多平台运行。这使得开发者能够更容易地将游戏移植到不同的设备上,扩大市场...

    cocos2d-x 游戏源码,高仿flappybird,

    通过研究这个源码,新手可以了解cocos2d-x的类结构、对象生命周期、动画机制、物理引擎应用等基础知识。此外,还可以学习如何使用cocos2d-x的精灵(Sprite)、动作(Action)和层(Layer)等组件构建游戏世界,以及...

    Cocos2D-X2.2.3学习笔记3(内存管理)

    本笔记将深入探讨Cocos2D-X中的内存管理策略,主要包括对象生命周期、内存分配与释放、引用计数以及智能指针的使用。 1. 对象生命周期:在Cocos2D-X中,每个对象都有其创建、使用和销毁的生命周期。当你创建一个...

    一个打乒乓球的cocos2d-x游戏

    1. **场景(Scene)与层(Layer)**:在cocos2d-x中,游戏逻辑通常被组织成多个场景,每个场景可以包含多个层。场景是游戏的主舞台,而层则是场景中的独立部分,负责处理特定的游戏功能。例如,我们可以创建一个`...

    cocos2d-x 3.0创建项目

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

    基于cocos2d-x引擎实现飞机大战

    在游戏开发领域,cocos2d-x是一个广泛应用的2D游戏开发框架,它基于C++,同时提供了Lua和JavaScript的绑定,支持跨平台开发,覆盖了iOS、Android、Windows等多个平台。本项目是利用cocos2d-x引擎制作的一款经典游戏...

    cocos2d-x for xna资料

    1. **基本架构**:cocos2d-x的核心组件包括Director(导演)、Scene(场景)、Layer(层)、Sprite(精灵)等,它们构成了游戏的基本结构。通过这些组件,开发者可以构建复杂的交互式游戏。 2. **渲染系统**:cocos...

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

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

Global site tag (gtag.js) - Google Analytics