@tydxtsg 写道:
代码如下:
问题 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); },
帖子: 1
参与者: 1