【发布时间】:2011-10-01 05:02:30
【问题描述】:
我试图让用户使用箭头键移动页面上的元素。到目前为止,我的运动适用于上/下/左/右,但不适用于对角线(同时按下两个箭头键)。
我的听众是这样的:
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 设置为 negative 或 positive,并触发 move() 函数,该函数会将元素移动到预设所需方向上的像素数,并且如果按下两个键,则会触发第二个事件......我也希望能够让用户通过快速释放和按下键来无缝地改变方向但是这些都没有发生,如果用户按下另一个方向键,他们似乎需要等待片刻才能发生移动,除非他们完全释放该键然后再按下另一个键,并且它根本不会响应第二个键,直到第一个键是发布。
【问题讨论】:
标签: javascript keydown addeventlistener