扫码关注官方订阅号
用键盘控制一个物体移动,按单个方向键可以,按下第二个方向键之后只是把前一个的效果覆盖了,我想要的效果是按两个键,物体能够斜移动,该怎么控制呢。还有就算设置好了,按下两个键的事件会不会覆盖单个按键的事件呢?
闭关修行中......
没有做过类似的东西,不过有些想法:
var Key = { UP: false, DOWN: false, LEFT: false, RIGHT: false }; var DIRECTION = { 38: "UP", 39: "RIGHT", 40: "DOWN", 41: "LEFT" }; dom.onkeydown = function(e) { if(DIRECTION[e.keyCode]) { Key[DIRECTION[e.keyCode]] = true; move(); } } dom.onkeyup = function(e) { if(DIRECTION[e.keyCode]) Key[DIRECTION[e.keyCode]] = false; } function move(){ // 这里通过判断Key下面有哪些是true,来进行移动 }
在 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; // ...... } })
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
没有做过类似的东西,不过有些想法:
在 keydown 函数中只是记录那个按键被按下,在 keyUp 中取消。