Javascript keyevents无法正常工作?

时间:2014-11-13 08:33:56

标签: javascript javascript-events keyboard-events keystroke event-listener

我正在制作一个游戏,点击空格键,玩家从左向右移动。再一次在空格键上,玩家将从右向左移动。我已经使用keyevents完成了编码,但它没有工作。

game.prototype.start_handling = function()
{
var that = this;

$(document).on('keydown.game' , function(e)
{
    that.key_down(e);
    return false;
});

$(document).on('keyup.game' ,function(e)
{
    that.key_up(e);
    return false;
});
}
game.prototype.key_down = function(e)
{
var code = e.keyCode;
var f1 = true;
var f2 = false;
if(code == 32 && f1 == true)
{
    this.player.jump();
    this.player.do_move_right = true;
    f1 = false;
    f2 = true;
}
if(code == 32 && f2 == true)
 {
    this.player.jump();
    this.player.do_move_left = true;
    this.player.do_move_right = true;
    f1 = true;
    f2 = false;
 } 
}
game.prototype.key_up = function(e)
{
var code = e.keyCode;
var f1 = true;
var f2 = false;
if(code == 32 && f1 == true)
{
    this.player.jump();
    this.player.do_move_right = true;
    f1 = false;
    f2 = true;
}
if(code == 32 && f2 == true)
 {
    this.player.jump();
    this.player.do_move_left = true;
    this.player.do_move_right = true;
    f1 = true;
    f2 = false;
 } 
}

伙计们我已经改变它并应用......但它仍然不起作用。我希望玩家在点击空间时从左向右移动然后停止然后再点击空间,玩家将从右向左移动。

2 个答案:

答案 0 :(得分:0)

你要检查两次相同的情况..

var code = e.keyCode;
if (code == 32) {
    if(!this.player.do_move_right) {
        this.player.jump();
        this.player.do_move_right = true;
    } else {
        this.player.jump();
        this.player.do_move_right = false;
    }
}

答案 1 :(得分:-1)

你是否添加了这样的监听器< body onkeyup =" myfunction()">

function myfunction(){
    var code = window.event.keyCode;
   // your code
}