Cocos Creator 为组件脚本提供了生命周期的回调函数。用户只要定义特定的回调函数,Creator 就会在特定的时期自动执行相关脚本,用户不需要手工调用它们。

目前提供给用户的生命周期回调函数主要有:

  • onLoad
  • start
  • update
  • lateUpdate
  • onDestroy
  • onEnable
  • onDisable

onLoad

组件脚本的初始化阶段,我们提供了 onLoad 回调函数。onLoad 回调会在组件首次激活时触发,比如所在的场景被载入,或者所在节点被激活的情况下。在 onLoad 阶段,保证了你可以获取到场景中的其他节点,以及节点关联的资源数据。onLoad 总是会在任何 start 方法调用前执行,这能用于安排脚本的初始化顺序。通常我们会在 onLoad 阶段去做一些初始化相关的操作。例如:

cc.Class({
extends: cc.Component, properties: {
bulletSprite: cc.SpriteFrame,
gun: cc.Node,
}, onLoad: function () {
this._bulletRect = this.bulletSprite.getRect();
this.gun = cc.find('hand/weapon', this.node);
},
});

start

start 回调函数会在组件第一次激活前,也就是第一次执行 update 之前触发start 通常用于初始化一些中间状态的数据,这些数据可能在 update 时会发生改变,并且被频繁的 enable 和 disable。

cc.Class({
extends: cc.Component, start: function () {
this._timer = 0.0;
}, update: function (dt) {
this._timer += dt;
if ( this._timer >= 10.0 ) {
console.log('I am done!');
this.enabled = false;
}
},
});

update

游戏开发的一个关键点是在每一帧渲染前更新物体的行为,状态和方位。这些更新操作通常都放在 update回调中。

cc.Class({
extends: cc.Component, update: function (dt) {
this.node.setPosition( 0.0, 40.0 * dt );
}
});

lateUpdate

update 会在所有动画更新前执行,但如果我们要在动画更新之后才进行一些额外操作,或者希望在所有组件的 update 都执行完之后才进行其它操作,那就需要用到 lateUpdate 回调。

cc.Class({
extends: cc.Component, lateUpdate: function (dt) {
this.node.rotation = ;
}
});

onEnable

当组件的 enabled 属性从 false 变为 true 时,或者所在节点的 active 属性从 false 变为 true时,会激活 onEnable 回调。倘若节点第一次被创建且 enabled 为 true,则会在 onLoad 之后,start 之前被调用。

onDisable

当组件的 enabled 属性从 true 变为 false 时,或者所在节点的 active 属性从 true 变为 false时,会激活 onDisable 回调。

onDestroy

当组件或者所在节点调用了 destroy(),则会调用 onDestroy 回调,并在当帧结束时统一回收组件。

来源:官网资料哦

最新文章

  1. CSharpGL(40)一种极其简单的半透明渲染方法
  2. 第 13 章 CSS 选择器[上]
  3. 列式存储(二)JFinal如何处理从前台传回来的二维数组
  4. Codeforces 723C. Polycarp at the Radio 模拟
  5. sprint1的个人总结及《构建之法》8、9、10章读后感
  6. php phpeclipse + xampp 配置安装过程
  7. 关于Linux中exec的一点心得
  8. ubuntu开机黑屏
  9. PAT (Advanced Level) 1025. PAT Ranking (25)
  10. java中垃圾回收机制和引用类型
  11. linux 查看java的安装路径
  12. Linux搭建git服务端
  13. ThreadLocal的意义和实现
  14. spark随笔
  15. c# 采用datatable 快速导入数据至MSSQL的方法分享
  16. There is no action xxxFun defined for api controller api/subitem
  17. Python生成器表达式
  18. hdu 1541 (基本树状数组) Stars
  19. Lisp之根源 --- 保罗格雷厄姆
  20. spark0.8.0安装与学习

热门文章

  1. 记录entityframework生成的sql语句
  2. 【转】CString与string、char*的区别和转换
  3. iPhone 收藏网址[添加到书签] 和 [添加到主屏幕] 显示自定义图标,而不是网页截图
  4. openwrt git 代码下载地址
  5. 02-第一个JavaScript代码
  6. 微信支付之JsApi支付
  7. webstrom里面的html页面设置
  8. 为什么js中0.1+0.2不等于0.3,怎样处理使之相等?(转载)
  9. 步步为营-53-JavaScript
  10. div展现与收起效果(鼠标移入移出)