Всем привет!
Делаю спрайтовую анимацию (sprite sheet animation), и столкнулся с проблемой управления движением объекта.
Движение состоит из проигрывания анимации от 0 до N-го кадра, пока эта анимация не проиграется следующее действие нельзя применить.
Все анимации хранятся в массиве битмапов.
Порядок анимаций так же хранится в массиве.
Вот код описывающий это нажатие клавиши:

Код AS3:
private function OnKeyDown( e:KeyboardEvent ):void
{
// движение объекта
// если состояние объекта покой то обрабатываем
// иначе ниего не делаем
if( m_eObjectState == Object.STATE_IDLE )
{
ObjectAction( e.keyCode );
}
}
ObjectAction -- взависимости от нажатой клавиши будет присваивать новое состояние
если клавиша вверх то m_eObjectState == Object.MOVE_UP и т.д
В главном цикле (событие ENTER_FRAME) происходит обработка этих событий:

Код AS3:
...
switch( m_eObjectState )
{
case Object.MOVE_UP:
{
m_ObjectDraw.DrawTile(m_ObjectUp[m_nCurFrame++]);
// двигаем объект
this.y -= m_fOffset;
}
// когда конец анимации
// ставим стейт IDLE
if( m_nCurFrame == m_ObjectUp.length )
{
m_eObjectState = Object.STATE_IDLE;
m_nCurFrame = 0;
}
} break;
.....
m_ObjectUp - массив индексов для анимации (порядок в котором должны выводиться картинки)..Все остальное должно быть понятно
Проблема заключается в том, что когда зажимаешь клавишу и объект начинает двигаться то он двигается сначала рывком, а затем все идет непрерывно без рывков.
Нажимаешь на клавишу объект двигается и замирает, затем продолжает двигаться нормально, как сделать так чтобы изначально объект не замирал?