防止代码发生,直到

时间:2014-03-24 02:17:01

标签: javascript jquery html

我试图制作游戏,但我的角色可以在标题画面上移动(如果我使用键移动他,然后按" Play&#34 ;,角色已经被移动到另一个位置了。)我认为我应该创建一个名为" CanMove"的变量,将其设置为false,并在最后将其设置为true按下" Play"按钮。但是,我不知道自己做错了什么。我把这些代码一直放在文档的末尾(但仍然在$(document).ready部分):

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;
        }
    });
}

你知道,当我按下按钮时,我将canMove设置为true(虽然按钮的代码位于我粘贴的代码上方),但它仍然无法正常工作。我认为这是因为文档在加载后已经检查了canMove是真还是假,如果你在加载后将它设置为true或false,它就没有区别。我不知道如何改变它,所以我很感激任何帮助!

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

1 个答案:

答案 0 :(得分:2)

if放在keydown处理程序中。这样,文档将始终检测键,但仅在设置canMove时才响应它们。

关于"我不知道我做错了什么" ...是的,你做了,你在代码下面的段落中完美地描述了它:你测试{{1只在开始时一次,并决定是否根据它设置canMove处理程序。如果你没有设置它,那么该文档将不会再次监听keydowns(除非你还要从代码中的其他地方设置它);如果你这样做,那么它将永远监听keydowns(除非你在代码中的其他地方删除处理程序)。