Есть следующий код для передвижения объекта.

Код AS3:
public function root () {
addChild(the_hero);
the_hero.x=200;
the_hero.y=200;
stage.addEventListener(KeyboardEvent.KEY_DOWN, key_pressed);
stage.addEventListener(KeyboardEvent.KEY_UP, key_releassed);
addEventListener(Event.ENTER_FRAME, render);
}
function key_pressed(e:KeyboardEvent):void
{
if (up==false && down==false && left==false && right==false)
{
switch(e.keyCode)
{
case Keyboard.UP:
up=true;
break;
case Keyboard.DOWN:
down=true;
break;
case Keyboard.LEFT:
left=true;
break;
case Keyboard.RIGHT:
right=true;
break;
}
}
}
function key_releassed(e:KeyboardEvent):void
{
switch(e.keyCode)
{
case Keyboard.UP:
up=false;
break;
case Keyboard.DOWN:
down=false;
break;
case Keyboard.LEFT:
left=false;
break;
case Keyboard.RIGHT:
right=false;
break;
}
}
function render(e:Event):void
{
if (up || down){
if(up){
yspeed-=power;
if (the_hero.y <0)
{
yspeed=0;
}
the_hero.rotation=0;
}
if(down){
yspeed+=power;
if (the_hero.y >400)
{
yspeed=0;
}
the_hero.rotation=180;
}
yspeed*=friction;
the_hero.y+=yspeed;
}
if (left || right)
{
if(left){
xspeed-=power;
the_hero.rotation=270;
}
if(right){
xspeed+=power;
the_hero.rotation=90;
}
xspeed*=friction;
the_hero.x+=xspeed;
}
}
Получаю такую проблему

Если пользователь поочередно нажимает клавиши движения то все нормально. Но в случае если он нажал сразу две кнопки и потом одну отпустил а вторую оставил нажатый то происходит задержка около секунды прежде чем объект начинает двигаться

Подскажите что я сделал не так? Или в данном случае может вообще какоето другое решение нужно использовать?
Заранее благодарю за ответ.