Cocos Creator 脚本执行顺序(摘自官方文档)

前端之家收集整理的这篇文章主要介绍了Cocos Creator 脚本执行顺序(摘自官方文档)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

脚本执行顺序

完善的脚本执行顺序控制将在新版本中添加,目前请使用下面的原则控制脚本执行顺序:

使用统一的控制脚本来初始化其他脚本

一般我都会有一个Game.js的脚本作为总的控制脚本,假如我还有Player.js,Enemy.js,monospace; font-size:13.6px; line-height:normal; padding:0.2em 0px; margin:0px">Menu.js三个组件,那么他们的初始化过程是这样的:

// Game.js

const Player = require('Player');
const Enemy = 'Enemy');
const Menu = 'Menu');

cc.Class({
    extends: cc.Component,properties: {
        player: Player,enemy: Enemy,menu: Menu
    },onLoad: function () {
        this.player.init();
        this.enemy.init();
        this.menu.init();
    }
});

其中在Enemy.jsMenu.js中需要实现init方法,并将初始化逻辑放进去。这样我们就可以保证 Player,Enemy 和 Menu 的初始化顺序。

在 Update 中用自定义方法控制更新顺序

同理如果要保证以上三个脚本的每帧更新顺序,我们也可以将分散在每个脚本里的update替换成自己定义的方法

// Player.js
    updatePlayer: function (dt) {
        // do player update
    }

然后在Game.js脚本的update调用这些方法

// Game.js
    update: function (dt) {
        this.player.updatePlayer(dt);
        this.enemy.updateEnemy(dt);
        this.menu.updateMenu(dt);
    }

控制同一个节点上的组件执行顺序

在同一个节点上的组件脚本执行顺序,是可以通过组件在属性检查器里的排列顺序来控制的。排列在上的组件会先于排列在下的组件执行。我们可以通过组件右上角的齿轮按钮里的Move UpMove Down菜单来调整组件的排列顺序和执行顺序。

假如我们有两个组件 CompA 和 CompB,他们的内容分别是:

// CompA.js
cc.Class({
    extends: cc.Component,// use this for initialization
    onLoad: function () {
        cc.log('CompA onLoad!');
    },start: function () {
        cc.log('CompA start!');
    },136); font-style:italic">// called every frame,uncomment this function to activate update callback
    update: function (dt) {
        cc.log('CompA update!');
    },});
// CompB.js
cc.Class({
    extends: cc.Component,68)">'CompB onLoad!');
    },68)">'CompB start!');
    },68)">'CompB update!');
    },});

组件顺序 CompA 在 CompB 上面时,输出

CompA onLoad!
CompB onLoad!
CompA start!
CompB start!
CompA update!
CompB update!

属性检查器里通过 CompA 组件右上角齿轮菜单里的Move Down将 CompA 移到 CompB 下面后,输出

CompB onLoad!
CompA onLoad!
CompB start!
CompA start!
CompB update!
CompA update!

猜你在找的Cocos2d-x相关文章