Как правильно определять удерживаемые клавиши во флэш-игре?Например, я хочу знать, что стрелка вправо удерживается для перемещения игрока.
Наивный код:
function handleKeyDown(event:KeyboardEvent) {
held[event.keyCode] = true;
}
function handleKeyUp(event:KeyboardEvent) {
held[event.keyCode] = false;
}
stage.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, handleKeyUp);
Наивный код имеет проблемы на некоторых компьютерах.Событие KEY_DOWN многократно чередуется с KEY_UP для удерживаемого ключа.Это делает ключ, кажется, выпущенным в некоторых кадрах.
Пример видимых событий:
[Just holding a single key.]
KEY_DOWN,KEY_UP,KEY_DOWN,KEY_UP,KEY_DOWN,KEY_UP,...