javascript按键控制动画

javascript按键控制动画,javascript,events,keypress,keydown,Javascript,Events,Keypress,Keydown,太空入侵者游戏:我想控制“基础炮”(左右移动并向入侵者发射导弹。所以我需要一个按键或(按键向下?)事件来更改变量(x坐标)和一个按键事件来发射导弹 有人能告诉我如何检测按键事件以及如何更改变量吗?像这样 document.onkeydown = checkKey; var xCoord = 100; function checkKey(e) { e = e || window.event; switch (e.keyCode) { case 37 : //

太空入侵者游戏:我想控制“基础炮”(左右移动并向入侵者发射导弹。所以我需要一个按键或(按键向下?)事件来更改变量(x坐标)和一个按键事件来发射导弹

有人能告诉我如何检测按键事件以及如何更改变量吗?

像这样

document.onkeydown = checkKey;

var xCoord = 100;

function checkKey(e) {
    e = e || window.event;

    switch (e.keyCode) {
        case 37 : // left
            xCoord -= 5;
        break;
        case 39 : // right
            xCoord += 5;
        break;
    }
}

激动人心的小提琴:

我想在其他答案中添加一些东西:

1) 使用常量使自己更轻松

2) 在javascript中无法检查当前是否按下了某个键,因此您也应该跟踪当前按下的键

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

var LEFT_ARROW = 37;
var UP_ARROW = 38;
var RIGHT_ARROW = 39;
var DOWN_ARROW = 40;

document.onkeydown = function (e) {
    e = e || window.event;
    switch (e.keyCode) {
    case LEFT_ARROW:
        pressed.left = true;
        break;
    case UP_ARROW:
        pressed.up = true;
        break;
    case RIGHT_ARROW:
        pressed.right = true;
        break;
    case DOWN_ARROW:
        pressed.down = true;
        break;
    default: 
        break;
    }
}

//update position separately
function updatePos() {
    if (pressed.up) { //change y up }
    if (pressed.down) { //change y down }
    if (pressed.left) { //change x left }
    if (pressed.right) { //change x right }
}

希望这有帮助,祝你好运

我使用了这个解决方案,效果很好,谢谢。除了控制台上的37==右和39==左。
var pressed = {
    up: false,
    down: false,
    left: false,
    right: false
};

var LEFT_ARROW = 37;
var UP_ARROW = 38;
var RIGHT_ARROW = 39;
var DOWN_ARROW = 40;

document.onkeydown = function (e) {
    e = e || window.event;
    switch (e.keyCode) {
    case LEFT_ARROW:
        pressed.left = true;
        break;
    case UP_ARROW:
        pressed.up = true;
        break;
    case RIGHT_ARROW:
        pressed.right = true;
        break;
    case DOWN_ARROW:
        pressed.down = true;
        break;
    default: 
        break;
    }
}

//update position separately
function updatePos() {
    if (pressed.up) { //change y up }
    if (pressed.down) { //change y down }
    if (pressed.left) { //change x left }
    if (pressed.right) { //change x right }
}