转自:http://shanbei.info/the-cocos2d-scene-conversion-method-execution-order.html

如果你希望在场景转换的过程中使用过渡效果的话,你可能想 先暂停某些动画或者隐藏一些用户界面元素,直到过渡效果结束。这就需要所 有的节点都存在于当前的场景中。以下来自从FirstScene过度到OtherScene的日志信息 显示了上述三个方法的调用次序:
1. scene: OtherScene
2. init: 
3. onEnter: 
4. // 这里运行了过渡效果
5. onExit: 
6. onEnterTransitionDidFinish:
7. dealloc:

首先,OtherScene 的+(id)scene 方法被调用,用于初始化它包含的 CCScene 和 CCLayer。然后 OtherScene 里 CCLayer 的 init 方法被调用。紧接着在第三行调 用OtherScene的 onEnter 方法。在第四行,通过使用过渡效果来使新场景移动进入。当新场 景移动进入完成以后,FirstScene 的 onExit 方法被调用,最后是调用 OtherScene 的 onEnterTransitionDidFinish 方法。
你会注意到 FirstScene 的 dealloc 方法是最后一个被调用的。这意味着在 onEnterTransitionDidFinish 方法的运行过程中,之前的场景仍在内存里。如 果你想在 onEnterTransitionDidFinish 方法里分配很耗内存的节点的话,你必 须先预约一个方法(或者“选择器”)(selector),至少等到下一帧时才分 配内存,这样你可以确保之前的场景已从内存中释放。另一个策略是在上一个 场景的 onExit 方法里释放尽可能多的内存。

cocos2d 场景转换的方法执行顺序的更多相关文章

  1. tableView代理方法执行顺序

    tableView代理方法执行顺序,随着iOS系统版本的不断升级,执行顺序也有所变化 1.iOS7.1中先依次调一遍heightForRow方法再依次调一遍cellForRow方法,在调cellFor ...

  2. Spring的Bean的生命周期方法执行顺序测试

    通过一个简单的Maven工程来演示Spring的Bean生命周期函数的执行顺序. 下面是工程的目录结构: 直接贴代码: pom.xml文件内容: <?xml version="1.0& ...

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

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

  4. FutureTask的用法及两种常用的使用场景 + FutureTask的方法执行示意图

    from:  https://blog.csdn.net/linchunquan/article/details/22382487 FutureTask可用于异步获取执行结果或取消执行任务的场景.通过 ...

  5. Tornado—接口调用时方法执行顺序

    import tornado.web # web服务 import tornado.ioloop # I/O 时间循环 class MainHandler(tornado.web.RequestHan ...

  6. UITableView的全部属性、方法以及代理方法执行顺序,看过之后肯定有收获---董鑫

    UITableView-------表视图--继承UIScrollView并遵守NSCoding协议 属性 frame-------------设置控件的位置和大小 backgroundColor-- ...

  7. Java代码块与构造器方法执行顺序

    直接上源码: public class Demo4 { { //这里是代码块 System.out.println("这里是代码块"); } static { //这里是静态代码块 ...

  8. jQuery源码05 (3653 , 3797) queue() : 队列方法 : 执行顺序的管理

    //对外接口 jQuery.extend({ queue: function( elem, type, data ) {//入队.元素.队列名字.存进去的函数 //jQuery.queue( this ...

  9. UITableView代理方知多少+执行顺序

    一.前言 iOS中UITableView是最常用的一个控件.看了一下UITableView的代理:UITableViewDelegate 和 UITableViewDataSource.其中UITab ...

随机推荐

  1. Maven相关内容学习笔记一:基本配置和使用

    首先必须推荐的这本书<Maven实战> 许晓斌,机械工业出版社 Maven简介 其实使用Maven也有很久时间了,大部分都是别人建好了工程我使用一下,实际上并没有非常详细的使用经验,这次到 ...

  2. 8.3-8.7 usaco

    summary:38 vijos1002:青蛙跳河. dp+压缩.距离大于100可以直接%100.然后数据范围小了很多可以dp了. #include<cstdio> #include< ...

  3. c#字符串及数组操作

    字符串操作(取当前时间)string time=convert.tostring(DateTime.Today).split( new char []{' '});    textbox1.text= ...

  4. GitHub进一步了解

    为什么要引入Git: 1)用简单一点的例子来讲: 一个公司有几个甚至十几个人共同合作开发一款项目的时候,公司对项目代码有明确规范,不可能再像学校做的小项目一样,你觉得哪个同学的代码写的不好,或者和你的 ...

  5. Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作 - Edison Chou

    一.Memcached ClientLib For .Net 首先,不得不说,许多语言都实现了连接Memcached的客户端,其中以Perl.PHP为主. 仅仅memcached网站上列出的语言就有: ...

  6. MySQL 视图知识点小结

    视图本身是一个虚拟表,不存放任何数据.在使用SQL语句访问视图的时候,它返回的数据是MySQL从其他表中生成的.视图和表在同一个命名空间, MySQL在很多地方对于视图和表是同样对待的.不过视图和表也 ...

  7. C# DataGridView绑定数据源的几种常见方式

    开始以前,先认识一下WinForm控件数据绑定的两种形式,简单数据绑定和复杂数据绑定. 1. 简单的数据绑定 例1 using (SqlConnection conn = new SqlConnect ...

  8. 工作流设计 zt

    工作流设计 业务流程管理模块是本平台的重要组成部分,要实现将已经发布的标准中规范化的流程转化为具体计算机中的流程从而实现流程的自动运转,将标准化成果与员工的日常工作紧密结合起来,具有重要意义. 业务流 ...

  9. linux下Qt问题cannot find -lGL collect2: error: ld returned 1 exit status

    fedora下解决 yum groupinstall "Development Tools" yum install mesa-libGL-devel ubuntu下解决 sudo ...

  10. SELinux的故障排除一例

    刚刚采用Puppet部署了dokuwiki,不过配置完成后报错: DokuWiki Setup Error The datadir ('pages') at /pages is not found, ...