我正在尝试让用户使用箭头键在页面上移动一个元素。目前为止,我已经实现了上/下/左/右的移动,但是对于斜线方向(同时按下两个箭头键)还没有实现。
我的监听器代码如下:
addEventListener('keydown', function(e){
move = false;
x = false;
y = false;
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
switch(keycode){
case 37:
move = true;
x = 'negative';
//prevent page scroll
e.preventDefault()
break;
case 38:
move = true;
y = 'negative'
//prevent page scroll
e.preventDefault()
break;
case 39:
move = true;
x = 'positive'
//prevent page scroll
e.preventDefault()
break;
case 40:
move = true;
y = 'positive'
//prevent page scroll
e.preventDefault()
break;
}
if(move){
animation.move(x,y);
}
return false;
})
如果用户按下箭头键,那么它会将x和y设置为负数或正数,并触发move()函数,该函数将以预设的像素数朝着所需的方向移动元素。如果同时按下两个键,则会触发第二个事件...我还希望用户能够通过快速释放和按下按键来无缝地改变方向。 然而,如果用户按下另一个方向键,似乎需要等待一段时间才能移动,除非他们完全释放该键然后再按下另一个键,否则不会对第二个键做出反应,直到第一个键被释放为止。