【发布时间】:2017-10-29 13:19:51
【问题描述】:
在执行其他代码之前,我在加载图像时遇到了一些问题。我通过设置一个运行几分之一秒的计时器来解决这个问题,这将让图像在其他代码执行之前加载。我试图重复这个工作,这只是让页面在庄家命中时滞后。
我的文件会使这篇文章变得很长,所以我只提供 github 存储库的链接。
- 你需要玩。解决方法的第一个实例是当您“击中”时。
- 第二种情况似乎不起作用,是庄家“击中”时。将显示警报并且图像不会加载。因此,换句话说,用户不会看到导致庄家爆牌或获胜的牌。
完整代码请见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