首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setInterval在第二次呼叫后不会停止

setInterval在第二次呼叫后不会停止
EN

Stack Overflow用户
提问于 2014-08-20 22:47:52
回答 1查看 63关注 0票数 0

我目前正在研究一种战斗系统。健康状况每200毫秒计算一次,我使用的是间隔。它的工作非常好,直到我开始比赛它不再停止了。

这是很多代码-我在这里也有一个在线现场演示http://wernersbacher.de/pro/coinerdev/

就像我说的-第一种有效,但第二种不起作用。

所以,主要代码是:

代码语言:javascript
复制
var frameStop;
 // Draws Startscreen
    function showStartRaid(name) {               
            playerBTC = btc;
            playerBTCs = btcs;
            playerName = nick;

            // Sets stats for called level
            enemyBTC = dun[name]["buyer"]["btc"];
            enemyBTCs = dun[name]["buyer"]["btcs"];
            enemyName = dun[name]["buyer"]["label"];   
            enemyNum = dun[name]["meta"]["base"];         

            /* Reset everything in html */
    }

    var battle = false;

    $(".raid_building").click(function() {           
        //Draws level
        showStartRaid(name);

        //Sets start BTC as fighting stats (they will decrease during battle)
        fplayerBTC = playerBTC;
        fenemyBTC = enemyBTC;
        //Click on "Start"
        $("#startRaid").click(function() {
            function raiden() {
                //Calculates fighting
                fenemyBTC -= playerBTCs/frameMinus;
                fplayerBTC -= enemyBTCs/frameMinus;

                /*Draws stats and health here in html */

                if(fplayerBTC >= 0 && fenemyBTC >= 0)
                    console.log("battle goes on")
                else {
                    //If battle is over, stop it
                    clearInterval(frameStop);
                }
            }
            //Start battle
            frameStop = setInterval(raiden, frameRaid);
        });
    });

谢谢你的帮助,我很无助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-20 22:52:11

使用您的代码,每次单击.raid_building时,都会为单击#startRaid建立一个新的处理程序。这意味着,如果.raid_building被点击两次,您将有两个处理程序来单击#startRaid,这两个处理程序都会启动一个新的间隔定时器。您的frameStop变量将只包含其中一个的句柄;另一个将继续。当然,第三次单击会使问题更加复杂(您将有三个click处理程序,每个处理程序都会触发一个新的间隔定时器)。等等..。

将与click上的#startRaid 挂钩的代码移到之外,单击处理程序在.raid_building上移动。

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

https://stackoverflow.com/questions/25415722

复制
相关文章

相似问题

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