Quantcast
Channel: Cocos中文社区 - 最新主题
Viewing all articles
Browse latest Browse all 88737

新人求指点,关于scheduleOnce的

$
0
0

@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

阅读整个主题


Viewing all articles
Browse latest Browse all 88737

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>