window.setTimeout() 麻烦
window.setTimeout() Troubles
我在执行其他代码之前加载图像时遇到一些问题。我通过设置一个计时器来解决这个问题,该计时器将 运行 持续几分之一秒,这将使图像在执行其他代码之前加载。我试图重复解决这个问题,但当经销商点击时,这只会让页面滞后。
我的文件会使这个 post 非常冗长,所以我只提供指向 github 存储库的链接。
- 你需要玩。解决方法的第一个实例是当您 'hit'.
- 第二个例子,似乎不起作用的是庄家 'hits'。将显示警报并且不会加载图像。所以换句话说,用户不会看到导致庄家爆牌或获胜的牌。
完整代码请见JS File
解决方法的第一个实例(命中():第 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
});
我在执行其他代码之前加载图像时遇到一些问题。我通过设置一个计时器来解决这个问题,该计时器将 运行 持续几分之一秒,这将使图像在执行其他代码之前加载。我试图重复解决这个问题,但当经销商点击时,这只会让页面滞后。
我的文件会使这个 post 非常冗长,所以我只提供指向 github 存储库的链接。
- 你需要玩。解决方法的第一个实例是当您 'hit'.
- 第二个例子,似乎不起作用的是庄家 'hits'。将显示警报并且不会加载图像。所以换句话说,用户不会看到导致庄家爆牌或获胜的牌。
完整代码请见JS File
解决方法的第一个实例(命中():第 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
});