我正在尝试为2名玩家做一个简单的乒乓球比赛。
第一个用A和Q(azerty键盘)控制他的打击垫。第二个用P和M控制他的垫。
这是代码
function handleKeyDown(e) {
switch (e.keyCode) {
case KEYCODE_ESC:
break;
case KEYCODE_UP:
p1Bitmap.y = p1Bitmap.y - 10;
break;
case KEYCODE_DOWN:
p1Bitmap.y = p1Bitmap.y + 10;
break;
case KEYCODE_A:
p1Bitmap.y = p1Bitmap.y - 10;
break;
case KEYCODE_Q:
p1Bitmap.y = p1Bitmap.y + 10;
break;
case KEYCODE_P:
p2Bitmap.y = p2Bitmap.y - 10;
break;
case KEYCODE_M:
p2Bitmap.y = p2Bitmap.y + 10;
break;
}
}
问题是当玩家1按下A上的A和玩家2时,第一个玩家的密钥会被忽略。
可以重复多个关键事件吗? (对于播放器1 A和播放器2 M的例子,我想得到这个:AMAMAMAMAMAMAMAMAMAMAMAMetc而不仅仅是AMMMMMMMMMMMMMMM)
顺便说一下,我正在为Windows 8应用程序(html / css / js)和CreateJS执行此操作。
答案 0 :(得分:3)
您可以保持移动,直到您检测到相应的keyup
事件。开始前进keydown
,不要停留到keyup
。
此外,应注意keydown
与keypress
不同。无论你按下钥匙多长时间,keydown
都只会发射一次。另一方面,keypress
会在每次插入(或插入)字符时触发,因此只要您按住该键,就会看到重复的事件。