我试图制作游戏,但我的角色可以在标题画面上移动(如果我使用键移动他,然后按" 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:我还希望能够阻止角色在游戏后期移动(即在文本框等期间)
答案 0 :(得分:2)
将if
放在keydown
处理程序中。这样,文档将始终检测键,但仅在设置canMove
时才响应它们。
关于"我不知道我做错了什么" ...是的,你做了,你在代码下面的段落中完美地描述了它:你测试{{1只在开始时一次,并决定是否根据它设置canMove
处理程序。如果你没有设置它,那么该文档将不会再次监听keydowns(除非你还要从代码中的其他地方设置它);如果你这样做,那么它将永远监听keydowns(除非你在代码中的其他地方删除处理程序)。