2012-09-21 105 views
1

我試圖實現一個simple blckjack game,問題是timeOut函數不能按我期望的那樣工作。我寫了一些調試信息來幫助你理解我的意思。有兩個字,我看到的是該函數被調用一次,而不是由於某種原因退出該函數,程序繼續執行自身,並重新調整到超時函數... 我想要的是暫停程序執行以等待用戶選擇是否要求新卡ot停止。 提前謝謝!Javascript超時功能 - 奇怪的行爲

+1

你的代碼在哪裏? – simonlchilds

+0

@simonlchilds查看鏈接。 http://venko.byethost14.com/ – F0G

+0

我已經在這個論壇上使用相同的函數嘗試了一個代碼提議,它的行爲方式也是一樣的。 – user1688617

回答

0

調用waitForUserInput()方法在哪裏?另外,爲什麼使用超時抓取用戶輸入?爲什麼不直接訂閱鼠標點擊事件?

+0

waitForUserInput()在185行調用 即時通訊新的JS這是我開發的... – user1688617

0

setTimeout不會停止腳本的執行。這只是爲了延遲執行。在你調用它之後 - 程序的執行將像往常一樣繼續,但是在指定的時間之後 - 作爲第一個參數傳遞的函數將被執行。等待用戶輸入 - 看看點擊/鍵入/ keydown等事件。

你不應該在JS中做下面的事情。 JS總是單線程,這樣的循環會凍結你的界面。在這種情況下,您應該在卡片塊上放置onclick事件,並在其中放置代碼,以執行您所需的操作。

while(true){ 
     waitForUserInput(); 
     if(requestCard){ 
      userHand.hitMe(); 

      var userHandCards = userHand.printHand().split(","); 
      displayCard(userHandCards[cardIndex]); 
      cardIndex++; 
      //console.log(">"+userHand.score()); 

      if(userHand.score()>21){ 
       break; 
      } 
     }else{ 
      break 
     } 

    }; 

我要的是暫停程序執行,以等待用戶選擇是否申請新卡OT停止

您應該將一些按鈕與指定onclick處理。只需根據點擊的按鈕運行你需要的代碼。現在我看不到用戶如何對您的程序說出他的選擇。如果這是一個鍵盤命令(「s」被按下而不是停止,「n」 - 下一張卡) - 您可以嘗試使用document.onkeyup

+0

我在JS代碼只有8天。像你這樣做的每個提議都很有幫助。謝謝。 – user1688617

+0

我不能說如何讓你的程序工作。它已經夠大了。但是如果你對JS非常陌生 - 查看不同的開發人員工具。通常你可以在任何瀏覽器中用F12調用它們(FireFox除外 - 你應該首先安裝Firebug擴展)。你可以在那裏調試你的代碼。正如我所說的 - 使用可用的事件來獲取用戶輸入。 –

+0

我已經知道這些工具:) – user1688617