在多个场景切换时候,场景的生命周期会更加复杂。这一节我们介绍一下场景切换生命周期。

多个场景切换时候分为几种情况:

情况1,使用pushScene函数从实现HelloWorld场景进入Setting场景。

情况2,使用replaceScene函数实现从HelloWorld场景进入Setting场景。

情况3,使用popScene函数从实现Setting场景回到HelloWorld场景。

我们参考HelloWorld重写Setting层的中几个生命周期函数,代码如下:

bool Setting::init()
{
if( !Layer::init() )
{
returnfalse;
} log("Settinginit");
......
returntrue;
} void Setting::onEnter()
{
Layer::onEnter();
log("SettingonEnter");
} void Setting::onEnterTransitionDidFinish()
{
Layer::onEnterTransitionDidFinish();
log("SettingonEnterTransitionDidFinish");
} void Setting::onExit()
{
Layer::onExit();
log("SettingonExit");
} void Setting::onExitTransitionDidStart()
{
Layer::onExitTransitionDidStart();
log("SettingonExitTransitionDidStart");
} void Setting::cleanup()
{
Layer::cleanup();
log("Settingcleanup");
}

情况1时候,它的调用顺序如下图所示。

情况2时候,它的调用顺序如下图所示,从图中可见与上面不同是多出HelloWorld中cleanup函数,这也说明replaceScene函数会释放场景对象。

情况3时候,它的调用顺序如下图所示,从图中可见popScene函数时候调用Setting中cleanup函数,这说明popScene函数会释放Setting场景对象,当回到HelloWorld场景时候并不会调用init()函数,而是调用onEnter函数。

cocos进阶教程(3)Cocos2d-x多场景切换生命周期的更多相关文章

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

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

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

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

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

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

  4. Fastify 系列教程三 (验证、序列化和生命周期)

    Fastify 系列教程: Fastify 系列教程一 (路由和日志) Fastify 系列教程二 (中间件.钩子函数和装饰器) Fastify 系列教程三 (验证.序列化和生命周期) 验证 Fast ...

  5. MyBatis的适用场景和生命周期

    MyBatis使用场景 对比Hibernate和MyBatis是我们常见的话题,Hibernate作为常用的ORM框架,它使用起来简单易懂,对于SQL语言的封装,让对于SQL并不是很熟练的程序员也可以 ...

  6. cocos进阶教程(1)Lua调用自定义C++类和函数的最佳实践

    第一层:纯C环境下,把C函数注册进Lua环境 a.lua 文件 )) a.c 文件 #include <lua.h> #include <lualib.h> #include ...

  7. cocos进阶教程(2)多分辨率支持策略和原理

    cocos2d-x3.0API常用接口 Director::getInstance()->getOpenGLView()->setDesignResolutionSize() //设计分辨 ...

  8. cocos进阶教程(5)CC_CALLBACK_X系列的使用技巧

    CC_CALLBACK_1,CC_CALLBACK_2,CC_CALLBACK_3 这些都是std::bind的宏,数字1,2,3主要表示要占位的数量,也是将来传递参数的数量. // new call ...

  9. cocos进阶教程(5)回调函数和定时器的使用技巧

    cc.CallFunc.create(selector, data) selector:函数名(函数指针) data:参数 table类型 函数写法 function(node,args ) node ...

随机推荐

  1. 关于sql 的convert 格式设置

    CONVERT(data_type,expression[,style]) convert(varchar(10),字段名,转换格式) 说明:此样式一般在时间类型(datetime,smalldate ...

  2. Linux下高频命令分类辑录(基本使用篇)

    本文目的:总结linux下常用命令的基本使用方法 文件权限: 文档权限设置命令:chmod 数字模式: 文档权限由-rwxrwxrwx十个字符组成,其中第一个代表文档类型,后面九个字符按照顺序分为三组 ...

  3. Git.Framework 框架随手记-- 分享一个"比较垃圾"的项目

    本文主要分享一个Git.Framework 开发的一个项目的部分源码,此项目代码"比较垃圾",所以请各位码农,码畜,码神,码圣勿喷!发此文只为记录工作问题以及分享问题! 一. 项目 ...

  4. sql server 清空数据库表数据

    --禁用外键约束 exec   sp_msforeachtable   'alter   table   ?   nocheck   constraint   all ' --清空数据 truncat ...

  5. jquery 的 sort 函数

    members = [45, 23, 12, 34];members = members.sort(function(a, b){return a-b; );这里面a-b为升序,b-a降序排列:但a, ...

  6. [转] 再探java基础——break和continue的用法

    原文地址:http://blog.csdn.net/luoweifu/article/details/10756017 break break可用于循环和switch...case...语句中. 用于 ...

  7. OC基础--分类(category) 和 协议(protocol)

    OC 中的category分类文件相当于 C#中的部分类:OC 中的protocol协议文件(本质是头文件)相当于 C#中的接口.今天就简单说明一下OC中的这两个文件. 由于视频中的Xcode版本低, ...

  8. Pro Git 读书笔记

    一. 起步 1. 集中式版本控制缺点:中央服务器的单点故障. 分布式版本控制优点:客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来. 这么一来,任何一处协同工作用的服务器发生故障,事后 ...

  9. text-align:justify_内容居中对齐

    一直发现text-align : justify这个对齐方式不好使,都不知道为什么么么哒: 因为两端对齐的这个行的结束要一个有空字符串或者别的不可见的字符,用户代理会把这个行的最后几个字符往右边拉,实 ...

  10. hdu1873优先队列

    #include<stdio.h> #include<queue> using namespace std; struct node { int id; int val; fr ...