首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EaselJS的问题

EaselJS的问题
EN

Stack Overflow用户
提问于 2014-11-22 02:33:48
回答 1查看 46关注 0票数 1

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

代码语言:javascript
复制
        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);
        }

EN

回答 1

Stack Overflow用户

发布于 2014-11-28 07:22:09

由于您知道在执行操作之前需要等待多少秒,也知道程序将以每秒多少帧的速度运行,因此您可以在执行操作之前对帧进行计数。

对帧进行计数的一种好方法是维护一个节拍计数器,并在计数器为正数的任何时候递减计数器,然后在计数器达到0时执行操作。下面是一个代码示例,它部分地使用了您的代码来说明这是如何工作的:

代码语言:javascript
复制
        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);
        }

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27067998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档