2012-09-21 104 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