enemy.js cc.Class({ extends: cc.Component, properties: { enemySpeed: 0, // 设置加速度 }, // 初始化当前节点的y坐标 init: function () { this .node.y = 0 ; }, onLoad () { }, start () { }, update (dt) { this .node.y += this .enem
enemy.js
cc.Class({ extends: cc.Component, properties: { enemySpeed: 0, //设置加速度 }, //初始化当前节点的y坐标 init: function () { this.node.y = 0; }, onLoad () { }, start () { }, update (dt) { this.node.y += this.enemySpeed; //每帧运动 }, });
game.js
cc.Class({ extends: cc.Component, properties: { enemyPrefab: { default: null, type: cc.Prefab, }, }, createEnemy: function (parentNode) { let enemy = null; if (this.enemyPool.size() > 0) { // 通过 size 接口判断对象池中是否有空闲的对象 enemy = this.enemyPool.get(); } else { // 如果没有空闲对象,也就是对象池中备用对象不够时,我们就用 cc.instantiate 重新创建 enemy = cc.instantiate(this.enemyPrefab); } enemy.parent = parentNode; // 将生成的敌人加入节点树 this.enemyNew = enemy; enemy.getComponent(‘enemy‘).init(); //接下来就可以调用 enemy 身上的脚本进行初始化, //如果不初始化enemy,在从对象池中获取this.enemyPool.get();的时候,该enemy身上的脚本参数还接着上次调用的时候; //因为执行this.enemyPool.put();只是把enemy重新放回对象池,并不是真正销毁;执行this.enemyPool.get()又可以重新获取出来; }, //监听键盘 setInputControl: function () { cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this); }, onKeyDown: function (event) { switch(event.keyCode) { case cc.KEY.t: this.enemyPool.put(this.enemyNew); //点击键盘T键销毁敌人 break; case cc.KEY.c: this.createEnemy(this.node); //点击C键创建敌人 break; } }, onLoad () { this.enemyPool = new cc.NodePool(); //new一个对象池出来 this.setInputControl(); //加载场景后持续监听键盘 }, // start () { // console.log(this.enemyPool.size()); // this.createEnemy(this.node); // }, update (dt) { console.log(this.enemyPool.size()); }, });