代码如下:
问题 this.scheduleOnce(function(){
this.enemyPool.put(enemy);
this.createEnemy(this.node);
},10);
这个代码执行的间隔时间越来越短,刚开始还是正常,但是后面时间就越来越短了
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.setPosition(this.getNewStarPosition());
//newXiaoji.setAnchorPoint(cc.p(0, 0));
// 将 Game 组件的实例传入星星组件
enemy.getComponent('xiaoji').game = this;
enemy.getComponent('xiaoji').init(enemy.node);
enemy.parent = parentNode; // 将生成的敌人加入节点树
this.scheduleOnce(function(){
this.enemyPool.put(enemy);
this.createEnemy(this.node);
},10);
//enemy.getComponent('Enemy').init(); //接下来就可以调用 enemy 身上的脚本进行初始化
this.starDuration = this.minStarDuration + cc.random0To1() * (this.maxStarDuration - this.minStarDuration)-2;
var listener2 = cc.EventListener.create({
event: cc.EventListener.TOUCH_ONE_BY_ONE,
swallowTouches: true, // 设置是否吞没事件,在 onTouchBegan 方法返回 true 时吞没
onTouchBegan: function (touch, event) { //实现 onTouchBegan 事件回调函数
var target = event.getCurrentTarget(); // 获取事件所绑定的 target
var pos = touch.getLocation();
//坐标转换
var a=pos.x;
a-=target.getParent().width/2;
var b=pos.y;
b-=target.getParent().height/2;
var point2 = cc.p(a,b);
if (cc.rectContainsPoint(target.getBoundingBox(),point2)){
gameceng.enemyPool.put(target);
gameceng.icount+=1;
gameceng.strscore.string="score: "+gameceng.icount.toString();
var fx = gameceng.spawnScoreFX();
gameceng.node.addChild(fx.node);
fx.node.setPosition(point2);
fx.play();
//gameceng.despawnScoreFX(fx.node);
gameceng.schedule(function(){
gameceng.despawnScoreFx(fx.node);
},3);
gameceng.createEnemy(gameceng.node);
return true;
}
return false;
}
});
cc.eventManager.addListener(listener2, enemy);
},