javascript keypress来控制动画

时间:2014-02-21 13:14:56

标签: javascript events keypress keydown

太空入侵者游戏:我想控制'基地枪'(向左和向右移动并向入侵者发射导弹。所以我需要一个按键或(keydown?)事件来改变一个变量(x坐标)和一个关键新闻事件发射导弹。

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

3 个答案:

答案 0 :(得分:0)

喜欢这个吗?

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

令人兴奋的小提琴:http://jsfiddle.net/u5eJp/

答案 1 :(得分:0)

document.onkeydown = function(e) {
        var key = e.keyCode;
        if (key===37) {//left arrow pressed

        } else if (key===39) {//right arrow pressed

        }

}

答案 2 :(得分:0)

我想在其他答案中加入一些事情:

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

希望这有帮助,祝你好运!