用键盘控制一个物体移动,按单个方向键可以,按下第二个方向键之后只是把前一个的效果覆盖了,我想要的效果是按两个键,物体能够斜移动,该怎么控制呢。
还有就算设置好了,按下两个键的事件会不会覆盖单个按键的事件呢?
用键盘控制一个物体移动,按单个方向键可以,按下第二个方向键之后只是把前一个的效果覆盖了,我想要的效果是按两个键,物体能够斜移动,该怎么控制呢。
还有就算设置好了,按下两个键的事件会不会覆盖单个按键的事件呢?
在 keydown 函数中只是记录那个按键被按下,在 keyUp 中取消。
var keys;
// LEFT: 0x01 DOWN:0x02 RIGHT:0x04 UP:0x08
window.addEventListen("keydown",function(evt){
switch(evt.keyCode) {
case LEFTARROW: keys |= 0x01;break;
// ......
}
var t;
if(!t){
t = setInterval(function(){ // or requestAnimationFrame
switch(keys){
case 0: clearInterval(t); t = null; break;
case 1: Move("left");break;
case 2: Move("down");break;
case 3: Move("down-left");break;
// .....
}
},1000/60);
}
})
window.addEventListen("keyup",function(evt){
switch(evt.keyCode) {
case LEFT: keys &= 0xFE;break;
// ......
}
})
13 回答13.1k 阅读
7 回答2.3k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.5k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
没有做过类似的东西,不过有些想法: