Javascript 防止代码发生,直到

Javascript 防止代码发生,直到,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试制作一个游戏,但我的角色可以在标题屏幕上移动(如果我使用键移动他,然后按“Play”,角色将被移动到其他位置)。我认为应该创建一个名为“CanMove”的变量,将其设置为false,当我按下“Play”按钮时,最终将其设置为true。然而,我不知道我做错了什么。我将此代码一直放在文档末尾(但仍在$(文档).ready部分): 你看,当我按下按钮时,我将canMove设置为true(虽然按钮的代码在我粘贴在这里的代码之上),但它仍然无法工作。我认为这是因为文档在加载后已经检查了canMo

我正在尝试制作一个游戏,但我的角色可以在标题屏幕上移动(如果我使用键移动他,然后按“
Play
”,角色将被移动到其他位置)。我认为应该创建一个名为“
CanMove
”的变量,将其设置为false,当我按下“
Play
”按钮时,最终将其设置为true。然而,我不知道我做错了什么。我将此代码一直放在文档末尾(但仍在
$(文档).ready
部分):

你看,当我按下按钮时,我将canMove设置为true(虽然按钮的代码在我粘贴在这里的代码之上),但它仍然无法工作。我认为这是因为文档在加载后已经检查了canMove是否为true或false,如果在加载后将其设置为true或false,则没有什么区别。我不知道如何改变这一点,所以我非常感谢任何帮助


PS:我还希望能够防止角色在游戏后期移动(即在文本框等过程中)

if
置于
按键下的
处理程序中。这样,文档将始终检测密钥,但仅在设置了
canMove
时才响应密钥

关于“我不知道我做错了什么”。。。是的,您可以这样做,您可以在代码下面的段落中完美地描述它:您在开始时只测试一次
canMove
,并根据这一点决定是否设置
keydown
处理程序。如果不进行设置,文档将不再侦听按键(除非您也从代码中的其他地方进行设置);如果您这样做,那么它将永远监听按键(除非您在代码中的其他地方删除处理程序)

if (canMove === true) {
    $(document).keydown(function(key) {
        switch(parseInt(key.which,10)) {
           case 65: //if LEFT direction pressed down:
             walkLeft();
             break;
           case 83: //if DOWN direction pressed down:
           $('#character').animate({top: "+=18px"}, 0.1);
             rightCharacter()
             changeRightCharacter();
             break;
           case 87: //if UP direction pressed down:
             jumpUp();      
             break;
           case 68: //if RIGHT direction pressed down:
             walkRight();
             break;
           default:
             break;
        }
    });
}