【2.0版本cocos2d-iphone 开发之转换场景时函数的调用顺序】

来源:互联网 发布:淘宝卖种子规定 编辑:程序博客网 时间:2024/05/29 09:11

       

作者:Senlern

转载请注明,原文链接:http://blog.csdn.net/zhang429350061/article/details/8282314


        由于最近遇到场景转换时不能正确释放和加载内容的问题,所以今天研究一下cocos2d中场景的转换时函数的调用问题。

我写了两个类,第一个类是First,第二个类是Second。


一。在First场景中中转换到Second场景的实验

1.首先关注一下[[CCDirector sharedDirector] replaceScene:[OtherScene scene]]这种调用方式下的顺序:

2012-12-11 15:01:07.871 Demo1[5839:1be03] Scecond Scene scene() called!
2012-12-11 15:01:07.872 Demo1[5839:1be03] Scecond Scene init() called!
2012-12-11 15:01:07.874 Demo1[5839:1be03] First Scene onExit() called!
2012-12-11 15:01:07.875 Demo1[5839:1be03] First Scene dealloc() called!
2012-12-11 15:01:07.877 Demo1[5839:1be03] Scecond Scene onEnter() called!
2012-12-11 15:01:07.878 Demo1[5839:1be03] Scecond Scene onEnterTransitionDidFinish() called!


2.再来看一下[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:2.0f scene:[OtherScene scene]]]使用转场动画之后的顺序

2012-12-11 15:22:45.790 Demo1[8299:1be03] Scecond Scene scene() called!
2012-12-11 15:22:45.794 Demo1[8299:1be03] Scecond Scene init() called!
2012-12-11 15:22:45.797 Demo1[8299:1be03] First Scene onExitTransitionDidStart() called!
2012-12-11 15:22:45.799 Demo1[8299:1be03] Scecond Scene onEnter() called!
2012-12-11 15:22:47.838 Demo1[8299:1be03] First Scene onExit() called!
2012-12-11 15:22:47.840 Demo1[8299:1be03] Scecond Scene onEnterTransitionDidFinish() called!
2012-12-11 15:22:47.842 Demo1[8299:1be03] First Scene dealloc() called!

这下子一目了然啦,这两种方式是有不小区别的~


二。在First场景中中转换到First场景的实验(即本场景自我转换)

1.首先关注一下[[CCDirector sharedDirector] replaceScene:[FirstScene scene]]这种调用方式下的顺序:

2012-12-11 15:41:23.391 Demo1[8329:1be03] First Scene scene() called!
2012-12-11 15:41:23.393 Demo1[8329:1be03] First Scene init() called!
2012-12-11 15:41:23.394 Demo1[8329:1be03] First Scene onExit() called!
2012-12-11 15:41:23.395 Demo1[8329:1be03] First Scene dealloc() called!
2012-12-11 15:41:23.397 Demo1[8329:1be03] First Scene onEnter() called!
2012-12-11 15:41:23.399 Demo1[8329:1be03] First Scene onEnterTransitionDidFinish() called!


2.再来看一下[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:2.0f scene:[FirstScene scene]]]使用转场动画之后的顺序

2012-12-11 15:43:55.437 Demo1[8351:1be03] First Scene scene() called!
2012-12-11 15:43:55.440 Demo1[8351:1be03] First Scene init() called!
2012-12-11 15:43:55.443 Demo1[8351:1be03] First Scene onExitTransitionDidStart() called!
2012-12-11 15:43:55.445 Demo1[8351:1be03] First Scene onEnter() called!
2012-12-11 15:43:57.477 Demo1[8351:1be03] First Scene onExit() called!
2012-12-11 15:43:57.478 Demo1[8351:1be03] First Scene onEnterTransitionDidFinish() called!
2012-12-11 15:43:57.481 Demo1[8351:1be03] First Scene dealloc() called!

其实是和第一个实验一样的效果。。。。。。。

好了,做完实验了,希望对大家有所帮助

注意:在使用onEnter和onExit等转场函数时,一定要在函数最开始写上[super onEnter]这句话,要不然会出现不响应触摸事件,不能预约更新等问题

原创粉丝点击