![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2010
Сообщений: 5
|
Всем привет!
Делаю спрайтовую анимацию (sprite sheet animation), и столкнулся с проблемой управления движением объекта. Движение состоит из проигрывания анимации от 0 до N-го кадра, пока эта анимация не проиграется следующее действие нельзя применить. Все анимации хранятся в массиве битмапов. Порядок анимаций так же хранится в массиве. Вот код описывающий это нажатие клавиши: private function OnKeyDown( e:KeyboardEvent ):void { // движение объекта // если состояние объекта покой то обрабатываем // иначе ниего не делаем if( m_eObjectState == Object.STATE_IDLE ) { ObjectAction( e.keyCode ); } } если клавиша вверх то m_eObjectState == Object.MOVE_UP и т.д В главном цикле (событие ENTER_FRAME) происходит обработка этих событий: ... 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; ..... ![]() Проблема заключается в том, что когда зажимаешь клавишу и объект начинает двигаться то он двигается сначала рывком, а затем все идет непрерывно без рывков. Нажимаешь на клавишу объект двигается и замирает, затем продолжает двигаться нормально, как сделать так чтобы изначально объект не замирал? |
![]() |
Часовой пояс GMT +4, время: 20:22. |
|
|
« Предыдущая тема | Следующая тема » |
|
|