Всем привет.
Какой-то странный баг и даже и не знаю как его убрать. Управление главным героем сделано с помощью слушателей событий:

Код AS3:
public function gameKeysDown(e:KeyboardEvent):void
{
if (! gameMenuPaused)
{
if (e.keyCode == 65 || e.keyCode == 37)
{
leftBln = true;
}
if (e.keyCode == 68 || e.keyCode == 39)
{
rightBln = true;
}
if (e.keyCode == 87 || e.keyCode == 38)
{
upBln = true;
}
if (e.keyCode == 83 || e.keyCode == 40)
{
downBln = true;
}
}
}
public function gameKeysUp(e:KeyboardEvent):void
{
if(!gameMenuPaused)
{
if (e.keyCode == 65 || e.keyCode == 37)
{
leftBln = false;
}
if (e.keyCode == 68 || e.keyCode == 39)
{
rightBln = false;
}
if (e.keyCode == 87 || e.keyCode == 38)
{
upBln = false;
}
if (e.keyCode == 83 || e.keyCode == 40)
{
downBln = false;
}
}
}
Ну и соотв, если true - двигаем, если false - не двигаем.
Но постоянно, при возрастании нагрузки на флешку, особенно на считыватели событий, кнопки начинают "залипать". Например управляю я героем и при этом постоянно клацаю кнопкой мыши - всё. Слушатель событий не успевает считать что кнопка была поднята и в результате герой начинает сам двигаться в какую-то сторону, что сильно портит игровой процесс.
Может кто сталкивался? Почему такое происходит?
И эту проблему можно решить с помощью dispatchEvent? (или idispatchEvent, я не разбирался ещё) Если я правильно понял - есть функции управления событиями. Хочу чтоб флеш больше ресурсов уделял на слушатели событий управления.
Или как можно эту проблему решить?