【问题标题】:window.setTimeout() Troubleswindow.setTimeout() 问题
【发布时间】:2017-10-29 13:19:51
【问题描述】:

在执行其他代码之前,我在加载图像时遇到了一些问题。我通过设置一个运行几分之一秒的计时器来解决这个问题,这将让图像在其他代码执行之前加载。我试图重复这个工作,这只是让页面在庄家命中时滞后。

我的文件会使这篇文章变得很长,所以我只提供 github 存储库的链接。

Git HTML Preview

  • 你需要玩。解决方法的第一个实例是当您“击中”时。
  • 第二种情况似乎不起作用,是庄家“击中”时。将显示警报并且图像不会加载。因此,换句话说,用户不会看到导致庄家爆牌或获胜的牌。

完整代码请见JS File

解决方法的第一个实例(hit():第 30 行) (这行得通)

window.setTimeout(function afterHit(){
    if(count(playerCards) == 21){
        stand();
    }
    else if(checkBust(count(playerCards))){
        alert("BUST!");
        clear();
    }
}, 150);

我遇到问题的部分(第 173 - 183 行):

function dealerAI() {
    while (count(dealerCards) < 16){
        window.setTimeout(function dealerHit(){
            console.log("check count");
            var i = dealerCards.length;
            dealerCards[ i ] = drawCard();
            document.getElementById( "dealer-cards" ).innerHTML += "<img src='src/img/" + dealerCards[ i ][ 1 ].toString().toLowerCase() + "-" + dealerCards[ i ][ 0 ] + ".png' />";
        },500);
    }
    window.setTimeout(checkWin,500);
}

如果我这样做,它会按照我想要的方式工作,但我希望庄家的动作要慢一些,以便玩家可以看到庄家在做什么。只有当庄家必须打不止一次时,这才是真正的问题。

function dealerAI() {
    while (count(dealerCards) < 16){
        console.log("check count");
        afterAIHit();
    }
    window.setTimeout(checkWin,200);
}
function afterAIHit(){
    window.setTimeout(dealerHit(),200);
    }
function dealerHit() {
    var i = dealerCards.length;
    dealerCards[ i ] = drawCard();
    console.log(dealerCards[i]);
    document.getElementById( "dealer-cards" ).innerHTML += "<img src='src/img/" + dealerCards[ i ][ 1 ].toString().toLowerCase() + "-" + dealerCards[ i ][ 0 ] + ".png' />";
}

任何帮助将不胜感激:)

谢谢!

【问题讨论】:

  • 在调用window.setTimeout(dealerHit(),200);时是否应该调用dealerHit()?
  • 你为什么不使用简单的事件比如点击然后这些模糊的超时

标签: javascript html settimeout blackjack


【解决方案1】:

由于您正在等待加载图像来处理您的脚本,因此只需附加一个事件侦听器,该侦听器将在图像加载后处理您的代码。

document.querySelector ("#imageWaitingFor").addEventListener ("load",function (){
//Your code
});

【讨论】:

    猜你喜欢
    • 2011-10-06
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多