Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript字母键绑定_Javascript_Mozilla_Keyboard Events - Fatal编程技术网

Javascript字母键绑定

Javascript字母键绑定,javascript,mozilla,keyboard-events,Javascript,Mozilla,Keyboard Events,我试图在按下D键(用于右移动)和A键(用于左移动)时发生这些事件,但当我在正确的位置输入正确的键代码时,当我按下D键或S键移动时,这些事件不起作用。谁能告诉我怎么了?我使用的是最新版本的Mozilla FireFox,但我不认为这是一个框架问题 document.onkeydown = function(e) { e = e || window.event; switch(e.which || e.keyCode) { case 37: leftpress = true; C

我试图在按下D键(用于右移动)和A键(用于左移动)时发生这些事件,但当我在正确的位置输入正确的键代码时,当我按下D键或S键移动时,这些事件不起作用。谁能告诉我怎么了?我使用的是最新版本的Mozilla FireFox,但我不认为这是一个框架问题

document.onkeydown = function(e) 
{
e = e || window.event;
switch(e.which || e.keyCode) 
{
  case 37:
    leftpress = true;
  Context.clearRect( 0, 0, CanWidth, CanHeight );     // Clear the Canvas
  Context.fillStyle = 'green'; 
 OldBackgroundX = BackgroundX;
 BackgroundX = BackgroundX + 5;
 Context.drawImage( FirstBackgroundImg, BackgroundX, BackgroundY, 1600, 800 );
 Context.fillText( "You move left.", 200, 100 );
     leftanimate = true;

     if ( jumppress == true )
      {
        leftjump = true;
      }
    break;




   // case 38: 

//  jump();

    // up/jump
    //break;

  case 39:
   if ( rightpress == true )
  {
    rightanimate = true;
  }
 /*console.log("You move right");
 Context.fillStyle = 'green'; 
 OldBackgroundX = BackgroundX;
 BackgroundX = BackgroundX - 20;
 Context.drawImage( FirstBackgroundImg, BackgroundX, BackgroundY, 1600, 800 );
 Context.drawImage( ArrowRightImg, 400, 200 );// right
 Context.fillText( "You move right.", 200, 100 );
    break;

    case 40: // down*/
    break;

    default: return; // exit this handler for other keys
}
e.preventDefault(); // prevent the default action (scroll / move caret)
};

document.onkeypress = function(event) 
{
   event = event || window.event;
  switch(event.which || event.keyCode) 
{
 case 32: 
     jumppress = true;

        if ( jumppress == true )
        {
           PJ = true;
        }

    if ( rightpress == true )
    {
      archjump = true;
    }

  if ( leftpress == true )
    {
      leftjump = true;
    }

              // up/jump
 break; 


 /*
  * 
  *   Player Right Animation 
  * 
  * 
  *                           */

 var Animation;
   case 39:

 rightpress = true;

 if ( rightpress == true )
  {
Context.clearRect( 0, 0, CanWidth, CanHeight );     // Clear the Canvas
    //console.log("You move right");
    Context.fillStyle = 'green'; 
    BackgroundX = BackgroundX - 5;
    Context.drawImage( FirstBackgroundImg, BackgroundX, BackgroundY, 1600, 800 );
    rightanimate = true;



  if ( jumppress == true )
   {
      archjump = true;
   }

  }

 break;





}


}

document.onkeyup = function(event) 
{
event = event || window.event;
switch(event.which || event.keyCode) 
{
  case 32:
    jumppress = false;
  break;

  case 39:
    rightpress = false;
  break;

  case 37:
    leftpress = false;

}
}

您正在使用错误的密钥代码绑定到WASD;您使用的代码对应于箭头键本身

var KEY = {
    WASD_LEFT:  65,
    WASD_RIGHT: 68,
    WASD_UP:    87,
    WASD_DOWN:  83
}

document.onkeydown = function (e) {
    switch (e.keyCode) {
        case KEY.WASD_LEFT:
            alert('Left');
            break;
        case KEY.WASD_RIGHT:
            alert('Right');
            break;
        case KEY.WASD_UP:
            alert('Up');
            break;
        case KEY.WASD_DOWN:
            alert('Down');
            break;

        default:
            return; // exit this handler for other keys
    }
};

这是一个很好的JS密钥代码参考,也是一个有趣的参考。

谢谢。A键可以工作,但由于某些原因,D右键仍然无法工作。请尝试使用document.onkeydown=function(e){alert(e.keyCode);};单击D查看代码是什么,我想我只需要有正确的事件开关就可以让它工作。