Javascript 中如何同时使用两个按键,现在情况是这样,我设置的A键向左,控制一个物体的移动

JavaScript08

Javascript 中如何同时使用两个按键,现在情况是这样,我设置的A键向左,控制一个物体的移动,第1张

其实两个运动是互相不影响的。我给你一个例子,按住a键,右边的红框左移,松开,框停止左移;按住右方向键左边的蓝框右移,松开,框停止右移。

<HTML>

<HEAD>

<TITLE>New Document </TITLE>

</HEAD>

<script>

var redflag=false

var blueflag=false

function moveRed(){

var obj=document.getElementById('red')

if(redflag)

obj.style.left=parseFloat(obj.style.left)-10+'px'

setTimeout('moveRed()',40)

}

function down(event){

var event=event||window.event

if(event.keyCode==65)

redflag=true

if(event.keyCode==39)

blueflag=true

}

function up(event){

var event=event||window.event

if(event.keyCode==65){

redflag=false

}

if(event.keyCode==39){

blueflag=false

}

}

function moveBlue(){

var obj=document.getElementById('blue')

if(blueflag)

obj.style.left=parseFloat(obj.style.left)+10+'px'

setTimeout('moveBlue()',40)

}

</script>

<BODY onload='moveBlue()moveRed()window.document.onkeyup=upwindow.document.onkeydown=down'>

<div id='red' style='position:absolutewidth:200pxheight:200pxborder:1px solid redleft:600px'></div>

<div id='blue'style='position:absolutewidth:200pxheight:200pxborder:1px solid blueleft:10px'></div>

</BODY>

</HTML>

可以监听到两个不同的keyCode,a和b不能同时按下,你认为的同时,在计算机看来还是有先后顺序,所以监听到的是a和b都触发了,但每次事件只有一个keyCode,所以你要检测时需要自行记录下状态,keydown记录下按键,keyup再取消这个按键,此时可以判断另一个按键是否在记录中,从而判断两个按键同时按

另外,shift ctrl等这些组合键可以直接在其他按键的事件中获取到状态,不需要自己记录