Flash可以检测到多少按键?使用as3
我正在开发一个小游戏。我使用以下代码检测播放机按下的键:Flash可以检测到多少按键?使用as3,flash,actionscript-3,events,keyboard,Flash,Actionscript 3,Events,Keyboard,我正在开发一个小游戏。我使用以下代码检测播放机按下的键: private function onKeyDown(event:KeyboardEvent):void { //moviment keys if (event.keyCode == 37 || event.keyCode == 65) { this.leftKeyPressed = true; } if (event.keyCode == 39 ||
private function onKeyDown(event:KeyboardEvent):void {
//moviment keys
if (event.keyCode == 37 || event.keyCode == 65) {
this.leftKeyPressed = true;
}
if (event.keyCode == 39 || event.keyCode == 68) {
this.rightKeyPressed = true;
}
if (event.keyCode == 38 || event.keyCode == 87) {
this.upKeyPressed = true;
}
if (event.keyCode == 40 || event.keyCode == 83) {
this.downKeyPressed = true;
}
if (event.keyCode == this.shootKey) {
this.shootKeyPressed = true;
}
}
onKeyUp事件:
private function onKeyUp(event:KeyboardEvent):void {
if (event.keyCode == 37 || event.keyCode == 65) {
this.leftKeyPressed = false;
}
if (event.keyCode == 39 || event.keyCode == 68) {
this.rightKeyPressed = false;
}
if (event.keyCode == 38 || event.keyCode == 87) {
this.upKeyPressed = false;
}
if (event.keyCode == 40 || event.keyCode == 83) {
this.downKeyPressed = false;
}
if (event.keyCode == this.shootKey) {
this.shootKeyPressed = false;
}
if (event.keyCode == changeColorKey) {
trace('color key released');
trace(getTimer());
this.changeColorKeyPressed = true;
}
}
基本上,射击键几乎一直被玩家按住。并且经常按下changeColorKey,但不能按住。在测试过程中,我注意到按住shootKey和右箭头,changeColorKey的onKeyUp事件不会被触发。按住向上或向下箭头键而不是向右箭头具有相同的效果。如果我按住左箭头键,事件将被触发。为什么会这样?我的代码有问题吗?我建议使用Keypoll库,您可以在这里找到它:
至于您可以按住多少键,我不确定,但请尝试使用ctrl键,shift键通常不计入限制(我没有在Flash/ActionScript中测试过这一点)。您看到的问题与代码无关,而与键盘有关。根据键盘技术的不同,您可以同时按下的键的数量和组合也不同。几年前,我编写了一个与您的代码非常相似的代码,我记得我遇到了与您提到的相同的问题,而我当前的键盘不再出现这种情况(看起来它最多可以支持五个同时出现的字母,而旧键盘支持三个)。我相信这个问题也与硬件键盘有关。我自己在键盘上测试了代码,在非usb键盘上不能同时按3个以上的键 在您的示例中,这应该不是问题,因为您永远不需要按超过3个键。但是要小心!另一个限制似乎存在于硬件键盘中,它与您彼此按下的键的距离有关 例如,在尝试您的代码时,当我在正在输入的键旁边输入了另外两个键(意思是不断按下)时,我似乎无法接收到一个键(因此我希望接收该键的事件)。所以我相信这就是为什么你的代码只能使用左箭头键。你的向上、向下和向右箭头键可能,不知何故,太接近changeColorKey,因此,(我猜是因为电路是如何在键盘上完成的)它不能触发它的向上状态
尝试将shootKey和/或changeColorKey移到其他地方,再远一点,看看是否有效。我尝试了KeyPoll类,它显示了按键的相同问题。好的,正确地设置闪光灯限制。您是否尝试使用ctrl和shift来实现某些功能?以及关于此问题的几篇文章(甚至包括如何破解键盘)。看起来usb键盘通常支持多达六个同时按键,所以如果你有一个旧键盘,这可能是升级它的好时机。