Cocos2d-x 场景的生命周期

***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************

又是一年毕业季啊。。。

毕业的学长学姐们分享各种经验——考研、考公、培训 ,巴拉巴拉....

继续做我的cocos2d-x吧

今天看一看场景的生命周期(这种基础东西,实在不该现在才注意到o(╯□╰)o)

这个生命周期,其实很重要,比如,在播放背景音乐的时候,什么时候播放,什么时候停止,这些我们都该去了解。

1.场景

一般情况下,一个场景只需要一个层。层需要子类化,编写自己的层类,而场景不需要子类化。

因此,场景的生命周期就通过层的生命周期来反映出来,通过重写层的生命周期函数,可以处理场景不同生命周期阶段的事件。

例如,可以在层进入函数(onEnter)中做一些初始化处理,在层退出函数(onExit)中释放一些资源。

2.层的生命周期函数

> bool init()                                                 初始化层调用

> void onEnter()                                         进入层时调用

> void onEnterTransitionDidFinish()          进入层而且过渡动画结束时调用

> void onEixt()                                            退出层时调用

> void onEixtTransitionDidStart()               退出层而且开始过渡动画时调用

> void cleanup()                                         层对象被清除时调用

PS:层(Layer)继承于节点(Node),这些生命周期函数,根本上是从Node继承而来的,也就是说,所有Node对象(Layer、Scene、Sprite等)都有这些生命周期函数,只要是子类化这些类都可以重写这些函数。

init函数的重写比较常见(应该是一定会重写= =。。)

以自带例子HelloWorld来说:

在头文件中是:

  virtual bool init();

在源文件中是:

bool HelloWorld::init()
{
  if( !Layer::init() )  {
    return false;
  }
  ...           // 该写啥写啥

  return true;
}

来一个不常见的,重写 onEnter函数,

头文件中:

 virtual void onEnter();

源文件中:

void HelloWorld::onEnter()
{
  Layer::onEnter();

  ...           // 添加自己想添加的,比如背景音乐的播放~
}  

剩下都大同小异,套路看懂没?  virtual声明—>调用父类—>添加自己的改动

一定要记住,首先要实现父类的相应函数,如果不调用,那么层中的动画、动作、schedule等等可能都无法执行了。

下图,是我们执行HelloWorld场景时的启动顺序:

3.多场景切换生命周期

刚看了一个场景启动的顺序,现在看一看多场景切换,生命周期是什么样子的呢?

场景的切换有三种情况:

? 使用replaceScene函数,实现从一个场景切换到另一个场景

? 使用pushScene函数,将当前场景入场景栈,然后切换到另一个场景

? 使用popScene函数,将当前场景结束掉,从场景栈弹出第一个场景,切换到那个场景

假设当前场景为HelloWorld,要切换到的下一个场景为HelloTree,下面三个图来全解上面三种情况:

? 使用replaceScene函数,切换场景

? 使用pushScene函数,切换场景

? 使用popScene函数,切换场景

***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************

时间: 2024-12-25 12:59:27

Cocos2d-x 场景的生命周期的相关文章

Cocos2d-x3.2 场景的生命周期

//GameScene.h #include "cocos2d.h" USING_NS_CC; class GameScene : public cocos2d::Layer { public:     GameScene(void);     ~GameScene(void);          static cocos2d::Scene* createScene();          virtual bool init();          virtual void onEnt

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

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

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

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

quick cocos2d x场景切换的生命周期函数调用学习

先上一个场景的基本模版: 1 local ModelScene = class("ModelScene", function() 2 return display.newScene("ModelScene") 3 end) 4 5 function ModelScene:ctor() 6 self.sceneName = "ModelScene" 7 -- 注册点击事件监听 8 self.layer = display.newLayer() 9

vue 生命周期使用场景

vue的生命周期的几个状态不一一描述 下面是vue的几个常用生命周期适合的场景 beforecreate        这个阶段的时候data和method都是拿不到的(通常在实例以外调用)created              这个可以调用实例的数据和实例的方法(带异步数据请求的方法可以放在这里)mounted           用于初始数据的dom渲染(需要操作dom的方法放这里)updated            用于对数据更新做统一处理 (如果想分别区分不同的数据更新,同时进行do

Android中activity的生命周期以及使用场景

#1完整生命周期代码如下. package com.wzw.lifecycle; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; public class MainActivity extends Activity { //被创建的时候调用的方法 @Override protected void onCreate(Bund

Vue生命周期及业务场景使用

vue里的生命周期是什么? vue实例从创建到销毁的过程称之为vue的生命周期 vue的生命周期各阶段都做了什么? beforeCreate 实例创建前:这个阶段实例的data.methods是读不到的created 实例创建后:这个阶段已经完成了数据观测(data observer),属性和方法的运算, watch/event 事件回调.mount挂载阶段还没开始,$el 属性目前不可见,数据并没有在DOM元素上进行渲染beforeMount:在挂载开始之前被调用:相关的 render 函数首

vue的生命周期以及使用场景

vue 1.beforeCreate(){} 创建前,访问不到data当中的属性以及methods当中的属性和方法,可以在当前生命周期创建一个loading,在页面加载完成之后将loading移除 2.created(){} 创建后,当前生命周期执行的时候会遍历data中所有的属性,给每一个属性都添加一个getter.setter方法,将data中的属性变成一个响应式属性 当前生命周期执行的时候会遍历data&&methods身上所有的属性和方法,将这些属性和方法代理到vue的实例身上 在

cocos2dx学习之路----第十章(Node节点生命周期详解)

这一篇我们就来看看Node节点的生命周期问题. 对于Node节点的生命周期,也称回调事件的回调.当对节点进行操作时,比如被添加或者移除,它默认都会调用自己的一些事件方法.现在就让我们看看属于它事件的回调方法有哪些,如下所示: virtual void onEnter(); //被添加到场景中的节点时调用 virtual void onEnterTransitionDidFinish(); //被添加到场景中的节点完成时调用 virtual void onExitTransitionDidStar