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());
- },});