cocos-creator使用记录2_生命周期回调



1.Cocos Creatord的生命周期回调
官方说明文档地址如下
http://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html


onLoad  在这个组件所在的场景被载入 的时候触发,
start  在组件第一次激活前,也就是第一次执行 update 之前触发。
update  在每一帧渲染前更新物体的行为,状态和方位。在所有动画更新前执行。
lateUpdate 在动画更新之后执行。
onDestroy 在该帧结束被统一回收
onEnable 当组件的 enabled 属性从 false 变为 true 时
onDisable   当组件的 enabled 属性从 true 变为 false 时


这里具体讲解一下onEnable、onDisable使用的情况。
//游戏界面
Canvas
--bg      //背景图片
--bgNode  //背景对象节点
--player  //主角
--endUI   //结束对话框(默认隐藏)
  --text
  --returenBtn //返回主界面按钮
  --inviteBtn  //邀请按钮
  --restartBtn //重新开始按钮
  
由上,结束对话框只是一个比较小的界面,其只会在游戏界面存在,
为其创建一个预置文件动态加载很不划算。故这里将其设置为游戏
界面的子节点。
想要显示结束界面时,如下
this.endUI.active = true;
想要显示结束界面时,如下
this.endUI.active = false;


这时,你在endUI节点上挂接的脚本组件End.js中写代码就要注意了,
一些非初始化的逻辑就不能放在onLoad中了,而要放在onEnable中。
因为,onLoad只会调用一次,官方说法是“onLoad 回调会在组件首次
激活时触发”。onEnable则会在endUI节点每次被设置为激活时触发。
如下:
onLoad: function(){
this.audioId = 0;
},
onEnable: function(){
this.audioId = cc.audioEngine.play(this.bgmAudio, true, 1);
},
onRestartBtnClicked: function () { //重新开始按钮
cc.audioEngine.stop(this.audioId);
this.node.active = false;
},


由上,endUI节点每次显示时,就会调用onEnable,背景音乐就会响起,
玩家点击重新开始按钮,背景音乐就会关闭,endUI节点也就隐藏了。
注意:以上代码对音乐的控制不是很好,只做演示onEnable用。


这里,容易犯的错误就是,总以为onLoad在每次界面显示时就会初始化,
其实不是的。它只会在首次激活时被调用。

猜你喜欢

转载自blog.csdn.net/haibo19981/article/details/80435508