js键盘事件

u010707379 2013-12-22 11:46:22
我在做一款游戏,练练手,WASD控制上下左右的移动,我想用方向键控制炮弹的发射方向,
在我按住W的时候,坦克向上走,马上按住右方向键,向右发炮,但是坦克就不走了,求教;
怎么实现同时监听了个键盘事件。javascript+html
...全文
150 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010707379 2013-12-25
  • 打赏
  • 举报
回复
谢谢,还有。你这个只控制了WSAD四个键,那上下左右4个方向键呢?按下W键坦克向上走,在走的时候按下方向键,坦克向下发炮,但是坦克不能听,边向上走同时还有向下发炮,所以在按下W的时候,再按方向键,W键不能失效?谢谢了
lxhbysn 2013-12-23
  • 打赏
  • 举报
回复
    if(e.which == 87 || state.up){         state.up = 0; } 这个判断有问题,当向上时,松开任意键,state.up = 0就会成立.坦克就会停. 这里应该使用&&.
chenqishanghai 2013-12-23
  • 打赏
  • 举报
回复
难度很高啊!
zhjdg 2013-12-23
  • 打赏
  • 举报
回复
顺手了。应该。 if(e.which == 87 ){ state.up = 0; }
zhjdg 2013-12-22
  • 打赏
  • 举报
回复
不会。 加多个条件。
var state = {
		up : 0,    //w
		down: 0,   //s
		left:0,    //d
		right:0   //a
}
function keydownFn(e){
	
	var s = state;
	if(e.which == 87 || state.up){
		state.up = 1;
		
	}
	if(e.which == 83 || state.down){
		state.down = 1;
		
	}
	if(e.code == 68 || state.left){
		state.left = 1;
		
	}
	if(e.code == 65 || state.right){
		state.right = 1;
	}
}
function keyupFn(e){
	var s = state;
	if(e.which == 87 || state.up){
		state.up = 0;
		
	}
	if(e.which == 83 || state.down){
		state.down = 0;
		
	}
	if(e.code == 68 || state.left){
		state.left = 0;
		
	}
	if(e.code == 65 || state.right){
		state.right = 0;
	}
}

document.addEventListener('keydown',keydownFn);
document.addEventListener('keyup',keyupFn);

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧