Это довольно распространенная проблема.
event.keyCode
даст вам только код клавиши для самой последней нажатой клавиши.Таким образом, вам придется хранить нажатия клавиш и отпускания клавиш.К счастью, AS3 - довольно приятная реализация Array, которая позволяет легко это сделать.
var _keys:Array;
addEventListener(KeyboardEvent.KEY_DOWN, keyDownEvent);
addEventListener(KeyboardEvent.KEY_UP, keyUpEvent);
function keyDownEvent(e:KeyboardEvent)
{
// turn the key on
_keys[e.keyCode] = true;
// perform logic
keyLogic()
}
function keyUpEvent(e:KeyboardEvent)
{
// turn the key off
_keys[e.keyCode] = false;
}
function keyLogic()
{
// this is where the actual logic is
if(_keys[Keyboard.SPACE] && _keys[Keyboard.CONTROL])
{
if (requireSelection)
acceptCompletion();
else
popUp.displayPopUp = false
}
}
Это позволяет вам иметь аккуратный маленький массив, который всегда сообщает вам, какие клавиши не активны.Он также отделяет логику вашей программы от логики ввода.Двойной выигрыш.