按键停止

商标代码

我正在使用一个对象来记录实例上正在按下的箭头键。在按住的同时,left如果我也开始按住right,然后停止按下,则leftkeydown函数仍将运行,但是如果我执行相同的设置但又停止按下right,则该函数停止。

功能如下:

var keys = {};

$(document).keydown(function(e){
    keys[e.which] = true;
    console.log('h');
    moveBall();

});

$(document).keyup(function(e){
    console.log(e.which);
    delete keys[e.which];
});

function moveBall(){
    var vals = [];
    var ball = $("#ball1");
    var up = false;
    var down = false;
    var left = false;
    var right = false;
    for( var key in keys ) {
        if ( keys.hasOwnProperty(key) ) {
            vals.push(key);
        }
    }
    if ($.inArray("39", vals)> -1) right = true; // Right
    if ($.inArray("37", vals)> -1) left = true;
    if ($.inArray("38", vals)> -1) up = true;
    if ($.inArray("40", vals)> -1) down = true;


}

有人可以解释一下为什么我停止按键时命令的顺序是否keydown仍在运行吗?

机器人大战

因此,您尝试循环“ moveBall”,并根据所按下的键进行操作。

我将稍微改变您的逻辑。

//Global object for what keys are active right now.

var keysBeingPressed = {
    right: false,
    left: false,
    up: false,
    down: false
};

$(document).keydown(function(e){
    // Set the right direction = true
    if (e.which == "39") keysBeingPressed.right = true;
    if (e.which == "37") keysBeingPressed.left = true;
    if (e.which == "38") keysBeingPressed.up = true;
    if (e.which == "40") keysBeingPressed.down = true;
});

$(document).keyup(function(e){
    // Set the right direction = false
    if (e.which == "39") keysBeingPressed.right = false;
    if (e.which == "37") keysBeingPressed.left = false;
    if (e.which == "38") keysBeingPressed.up = false;
    if (e.which == "40") keysBeingPressed.down = false;
});



function moveBall(){
    var ball = $("#ball1");

    // Going left is decreasing X, right is increasing X.
    // Going up is decreasing Y, down increases Y.
    // So, up+left, is diagonal, you move x and y both..
    var movement = {
        x: 0,
        y: 0
    }

    if(keysBeingPressed.right) movement.x++;
    if(keysBeingPressed.left) movement.x--;  //If left+right; x = 1 - 1 = 0 so no movement.
    if(keysBeingPressed.up) movement.y--;
    if(keysBeingPressed.down) movement.y++;

    // add your movement in x/y to top/left
    ball.css({
        top: "+="+movement.y,  //+= adds the value
        left: "+="+movement.x
    });
}

// Loop this function, you want it to run every "animation frame"
setInterval(function(){
    moveBall();
}, 10);

确实添加了代码来移动球。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

<enter> 停止按键操作

来自分类Dev

停止按键上的jQuery代码

来自分类Dev

停止并恢复按键输入上的无限循环

来自分类Dev

停止由于按键而触发模糊事件

来自分类Dev

等待while循环中的按键并停止脚本

来自分类Dev

JavaScript EventListener多个按键按下在一个按键触发按键后停止

来自分类Dev

如果没有按键继续则进行批处理(通过按键停止循环)

来自分类Dev

如果没有按键继续则进行批处理(通过按键停止循环)

来自分类Dev

Java游戏步行+跳跃会停止按键动作吗?

来自分类Dev

iOS:如何在键盘按键后停止接收KeyboardWillShowNotification

来自分类Dev

Java游戏步行+跳跃会停止按键动作吗?

来自分类Dev

在不停止程序的情况下从按键检查字符

来自分类Dev

UnboundLocalError:pygame音乐播放并停止运行(在按下按键时)

来自分类Dev

如何使动画在按键w,a,s和/或d上播放并在没有按键时停止播放?

来自分类Dev

RX如何按键将复杂对象分组,然后在不“停止”流的情况下执行SelectMany?

来自分类Dev

在Linux中使用bash脚本通过轮询按键来启动和停止尾部

来自分类Dev

如何在后台启动子进程并通过按键将其停止?

来自分类Dev

在Linux中使用bash脚本通过轮询按键来启动和停止尾部

来自分类Dev

为什么我的Windows 10会停止在数字行上注册按键?

来自分类Dev

按键替换/按键功能

来自分类Dev

绑定按键

来自分类Dev

可读的按键

来自分类Dev

Firebase按键

来自分类Dev

OpenTK按键?

来自分类Dev

按键检测

来自分类Dev

键盘按键

来自分类Dev

Firebase按键

来自分类Dev

按键事件

来自分类Dev

管理按键