javascript - 防止代码发生,直到

标签 javascript jquery html

我正在尝试制作一个游戏,但我的 Angular 色被允许在标题屏幕上移动(如果我使用按键移动他,然后按“Play”, Angular 色将已经被移动到不同的位置。)我认为我应该创建一个名为“CanMove”的变量,将其设置为 false,并最终在按下“Play<”时将其设置为 true/”按钮。但是,我不知道我做错了什么。我将此代码一直放在文档的末尾(但仍在 $(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,并且在加载后将其设置为 true 或 false 并没有什么区别。我不知道如何改变它,所以我将不胜感激任何帮助!

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

最佳答案

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

关于“我不知道我做错了什么”...是的,你知道,你在代码下面的段落中完美地描述了它:你只在启动,并根据情况决定是否设置 keydown 处理程序。如果您不设置它,文档将不再监听按键(除非您还从代码中的其他位置设置它);如果您这样做,那么它将永远监听按键(除非您在代码中的其他位置删除处理程序)。

关于javascript - 防止代码发生,直到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22599989/

相关文章:

c# - 正则表达式验证器中的验证表达式

javascript - 对不同的类重复一段javascript代码,无需重复代码

javascript - 鼠标悬停时从数据目标弹出图像

php - 使用 ajax/jquery/php 发送单个输入

javascript - 渲染前根据屏幕尺寸计算图像尺寸

图像上链接的 javascript 标签,超时 3 秒

javascript - iScroll 5 在导航 View 时跳转到页面顶部

javascript - 如何对两个键必须匹配的数组求和,如 Excel Pivot?

javascript - 防止页面不断重新加载

javascript - 在 div 之外的元素部分的不透明度较低