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

  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. self:registerScriptHandler(onNodeEvent)
  19. end
  20. function SettingScene:onEnter()
  21. cclog("SettingScene onEnter")
  22. end
  23. function SettingScene:onEnterTransitionFinish()
  24. cclog("SettingScene onEnterTransitionFinish")
  25. end
  26. function SettingScene:onExit()
  27. cclog("SettingScene onExit")
  28. end
  29. function SettingScene:onExitTransitionStart()
  30. cclog("SettingScene onExitTransitionStart")
  31. end
  32. function SettingScene:cleanup()
  33. cclog("SettingScene cleanup")
  34. 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中多场景切换生命周期的更多相关文章

  1. 【Cocos2d-x 3.x】 场景切换生命周期、背景音乐播放和场景切换原理与源码分析

    大部分游戏里有很多个场景,场景之间需要切换,有时候切换的时候会进行背景音乐的播放和停止,因此对这块内容进行了总结. 场景切换生命周期 场景切换用到的函数: bool Setting::init() { ...

  2. cocos进阶教程(3)Cocos2d-x多场景切换生命周期

    在多个场景切换时候,场景的生命周期会更加复杂.这一节我们介绍一下场景切换生命周期. 多个场景切换时候分为几种情况: 情况1,使用pushScene函数从实现HelloWorld场景进入Setting场 ...

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

    在多个场景切换时候,场景的生命周期会更加复杂.这一节我们介绍一下场景切换生命周期. 多个场景切换时候分为几种情况: 情况1,使用pushScene函数从实现HelloWorld场景进入Setting场 ...

  4. 【转】WPF中的窗口的生命周期

    原文地址:http://www.cnblogs.com/Jennifer/articles/1997763.html WPF中的窗口的生命周期 WPF中所有窗口的基类型都是System.Windows ...

  5. React Native 中的component 的生命周期

    React Native中的component跟Android中的activity,fragment等一样,存在生命周期,下面先给出component的生命周期图 getDefaultProps ob ...

  6. Envoy 代理中的请求的生命周期

    Envoy 代理中的请求的生命周期 翻译自Envoy官方文档. 目录 Envoy 代理中的请求的生命周期 术语 网络拓扑 配置 高层架构 请求流 总览 1.Listener TCP连接的接收 2.监听 ...

  7. vue生命周期图示中英文版Vue实例生命周期钩子

    vue生命周期图示中英文版Vue实例生命周期钩子知乎上近日有人发起了一个 “react 是不是比 vue 牛皮,为什么?” 的问题,Vue.js 作者尤雨溪12月4日正面回应了该问题.以下是尤雨溪回复 ...

  8. spring-第八篇之容器中的bean的生命周期

    1.容器中的bean的生命周期 spring容器可以管理singleton作用域的bean的生命周期,包括bean何时被创建.何时初始化完成.何时被销毁.客户端代码不能控制该类型bean的销毁.spr ...

  9. cocos2d-x 2.x版本中,场景切换各方法调用顺序

    假设从A场景切换到B场景,调用各场景方法的顺序为: 如果没有切换效果(transition),则先调用B的init(),再调用A的onExitTransitionStart(),接着调用A的onExi ...

随机推荐

  1. MyEclipse图表工具Birt的使用技巧(三)--连接webservice数据源

    Web Services 技术是一套标准.它定义了应用程序怎样在Web上实现互操作. 用户能够使用不论什么语言.在不同的平台下编写Web Services.然后通过Web Services 的标准来对 ...

  2. 网络编程基础——学习阻塞,非阻塞(select和epoll)

    <h3 class="xyn" helvetica="" neue',="" helvetica,="" aria ...

  3. openerp-server.conf 中配置 dbfilter 参数无效的解决办法

    来自:http://shine-it.net/index.php/topic,14517.html 以前就发现过这个问题, 今天重新在群里同大家讨论了一下. 有时候可能我们希望用户不从登陆界面的账套选 ...

  4. 【DB2】DB2中rank(),dense_rank(),row_number()的用法

    1.准备测试数据 DROP TABLE oliver_1; ),SUB_NO ),SCORE int); ,,); ,,); ,,); ,,); ,,); ,,); 2.详解rank(),dense_ ...

  5. Javascript - demo 与 捷径

    1.页面的后退.刷新.前进 function back(){ history.go(-1); // 后退 } function forward(){ history.go(+1); // 前进 1 页 ...

  6. Java 8中的 Streams API 详解

    为什么需要 Stream Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念.它也不同于 StAX 对 ...

  7. 一步步教你如何进行Xilinx SerDes调试

    FPGA SERDES的应用需要考虑到板级硬件,SERDES参数和使用,应用协议等方面.由于这种复杂性,SERDES的调试工作对很多工程师来说是一个挑战.本文将描述SERDES的一般调试方法,便于工程 ...

  8. ulimit调优|设置普通用户的ulimit值

    个人总结: 如何设置普通用户的ulimit值 1.vim /etc/profile 增加 ulimit -n 10240 source /etc/profile 重新启动就不需要运行这个命令了. 2. ...

  9. python-扫描某一网段下的ip

    #!/usr/bin/env python #-*- coding:utf-8 -*- ############################ #File Name: ipscaner.py #Au ...

  10. log4j日志写入数据库

    # log4j写入数据库 ### 前言-----------------------------log4j是写入日志到控制台和文件很常见,但是写入到数据库不多见.做性能测试写入到数据库,统计方便些. ...