gpt4 book ai didi

javascript - window.setTimeout() 问题

转载 作者:行者123 更新时间:2023-12-03 04:13:33 24 4
gpt4 key购买 nike

在执行其他代码之前,我在加载图像时遇到了一些问题。我有一个解决办法,设置一个计时器,该计时器将运行几分之一秒,这将使图像在执行其他代码之前加载。我尝试重复该解决方案,但这只会导致荷官点击时页面出现延迟。

我的文件会使这篇文章变得非常冗长,所以我只会提供 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' />";
}

如有任何帮助,我们将不胜感激:)

谢谢!

最佳答案

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

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

关于javascript - window.setTimeout() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44238977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com