0

我想开发一个非常简单的战略游戏。您可以在http://wiesenberg.info/hope/上找到一个示例!

如果您单击一个按钮,将创建该项目(进度条)。完成后,该项目将出现在操场上。如您所见,如果您一一单击,它就会起作用。但是一旦你点击一个按钮两次(启动 2 个同类型的项目),第二个项目将不会完成,因为第一个项目还没有完成并增加了变量。有没有一种简单的方法来做多线程或只是解决我的错误?

我还想添加一个功能,您可以通过单击进度条来停止项目。我试了一下,它在列表中消失了,但图标仍然出现,因为该函数没有得到另一个函数已执行。所以我还需要进度条的中断功能。我希望你明白我的问题!谢谢

这是重要的代码:

function addSygehus() {
    sygehusBarID++;
    sygehusID++;
    $("#addProject").append("<div id=sygehus" + sygehusID +
            " class='progress progress-striped active'><div class='progress-bar progress-bar-success' id=sygehusbar"
            + sygehusBarID + " aria-valuetransitiongoal='100'>Sygehus</div></div>");
    function countdown(callback) {
        var bar = document.getElementById("sygehusbar"+sygehusBarID),
                time = 0, max = firsttime,
                int = setInterval(function() {
            bar.style.width = Math.floor(100 * time++ / max) + '%';
            if (time - 1 == max) {
                clearInterval(int);
                // 600ms - width animation time
                callback && setTimeout(callback, 600);
            }
        }, 1000);                            
    }

    countdown(function() {
        $("#sygehus" + sygehusID).remove();
        $("#sygehusPic" + sygehusID).show(1000);

    });
}
4

1 回答 1

0

我一般会查看 JQuery Deferred ( http://api.jquery.com/jQuery.Deferred/ ) 和 Promises Documentation 来管理您想要实现的目标。因此,您可以对异步调用发生的顺序进行一些控制。

您还拥有 Q.js ( https://github.com/kriskowal/q ) 是一个很好的库,用于管理这些场景。

否则,您已经提到了用于模拟多线程行为的网络工作者,但我认为这不是您要寻找的。

于 2013-10-30T19:47:44.977 回答