问题与EaselJS

时间:2014-11-21 18:33:48

标签: javascript easeljs

我用EaselJS开发TD游戏并面临一个问题。 当敌人来到城堡时,他应该开始用uniq延迟攻击它。(例如女巫:3秒,元素:2秒e.t.c.) 如何使用启用的自动收报机设置此延迟?

        createjs.Ticker.on("tick", moveTick);
        createjs.Ticker.setFPS(20);
        console.log(mobs);

        function moveTick(event) {
            for (var i = 0; i < mobs.length; i++) {
                if (mobs[i].y > stage.canvas.height - castle.castleHeight - mobs[i].elemSize) {
                    setTimeout(console.log("attacking"), 600000);
                } else {
                    mobs[i].y = mobs[i].y + mobs[i].movementSpeed;
                }
            }
            field.update(event);
        }

1 个答案:

答案 0 :(得分:0)

由于您知道在执行操作之前需要等待多少秒,并且您知道程序将在每秒运行多少帧,您可以做的是在执行操作之前计算帧数。

计算帧数的一个好方法是维持一个滴答计数器,并在计数器为正数时递减计数器,然后在计数器达到0时执行一个动作。这是一个部分利用的代码示例你的代码如何运作:

        createjs.Ticker.on("tick", moveTick);
        createjs.Ticker.setFPS(20);
        console.log(mobs);

        // note that enemy_ticker would probably be a property of your enemy object:
        var enemy_ticker = -1; 

        function moveTick(event) {
            if (event that causes enemy to attack soon) {
                enemy_ticker = 60; // this gives us 3 seconds
            }

            if (enemy_ticker > 0) {
                enemy_ticker--;
            } else if (enemy_ticker = 0) {
                enemy_ticker--;
                // put your code to start your enemy's attack here
            }
            field.update(event);
        }