场景的生命周期及回调方法
来源:互联网 发布:b站视频下载 知乎 编辑:程序博客网 时间:2024/06/02 03:30
一、场景之间切换,一般由Director来操作,有两种方式:
1、push和pop压栈的形式,在A场景,push B场景,A场景还存在,只是显示的是B场景,然后pop回A场景,还是原来的那个A场景。这个跟应用开发里的navigationController的push和pop一样。
此外,压栈只能一层一层压,出栈可以多层出。
Director的push方法:
void pushScene(Scene *scene);
Director的单层出栈方法:
void popScene();
Director的返回根场景的方法:
void popToRootScene();Director的返回某个层级场景的方法:
/** Pops out all scenes from the stack until it reaches `level`. If level is 0, it will end the director. If level is 1, it will pop all scenes until it reaches to root scene. If level is <= than the current stack level, it won't do anything. */ void popToSceneStackLevel(int level);
2、replace形式,在A场景replace B场景,这个时候A场景就销毁了,变成B场景,再replace A场景,这个时候A场景就是一个新的场景了。
Director的replace方法:
void replaceScene(Scene *scene);
此外,导演类还有一个很常见的方法,第一次进入的场景,马上执行的:
void runWithScene(Scene *scene);
二、场景切换时候的回调方法,场景的声明周期分单场景和多场景:
1、单场景的回调方法执行顺序如下:
virtual bool init(); virtual void onEnter(); virtual void onEnterTransitionDidFinish();
2、初始化方法是重写父类的Layer的init方法。
多场景又根据场景的切换方式的不同,执行回调方法的顺序也有所不同,大致分三种:
1、A场景下,push B场景入栈:
B::init();A::onExitTransitionDidStart();B::onEnter();A::onExit();B::onExitTransitionDidFinish;2、A场景下,调用replace进入B场景:
B::init();A::onExitTransitionDidStart();B::onEnter();A::onExit();B::onExitTransitionDidFinish;A::cleanup();
跟第一种类似,但是多了一个A场景的cleanup操作,因为A场景已经准备被销毁掉了。
3、B场景下,pop回A场景:
B::onExitTransitionDidStart();B::onExit();B::cleanup();A::onEnter();A::onEnterTransitionDidFinish();
场景切换,主要要注意的就是执行顺序的问题,有可能导致画面还没出来,下一个场景的背景音乐就开始播放;或者是第二个场景的对象已经创建,第一个场景的对象还没释放,导致说一下子内存暴涨闪退的问题。这一块内容在后续文章中还会讨论,优化的问题。
0 0
- 场景的生命周期及回调方法
- 【面试】activity的生命周期及应景场景
- Activity生命周期及应用场景
- android service 生命周期及场景
- Activity的生命周期及方法
- 场景的生命周期
- 【coco2dx场景Scene的生命周期】
- Cocos2d-x 场景的生命周期
- Activity生命周期、回调方法及状态详解
- Activity生命周期、回调方法及状态详解
- Activity的启动模式以及onNewIntent和onConfigurationChanged这两个生命周期方法的场景
- cocos2d-x 释放场景、动画及UI的方法
- 数据库分库分表的应用场景及方法分析
- cocos2dx单场景和多场景的生命周期
- cocos2dx单场景和多场景的生命周期
- cocos2d-x的场景类和生命周期
- Activity的生命周期与应用场景
- Android activity生命周期的几种场景
- 背景图片不断下移的效果
- 【设计模式】单例模式
- 单链表逆序
- Android中使用SQLiteOpenHelper管理SD卡中的数据库
- 【ZOJ 2103】 Marco Popo the Traveler
- 场景的生命周期及回调方法
- Android之HttpsURLConnection访问网络(android https协议)
- 第五周 项目一-体验成员函数
- 数据库学习笔记(2)
- Android 抽样布局总结
- Android中使用POI加载与显示word文档
- 收藏一款开源WinForm企业业务系统框架-HYAppFrame
- 使用Builder模式代替来创建实例
- 数据库学习笔记(3)