Показать сообщение отдельно
Старый 17.09.2010, 18:50
DziD вне форума Посмотреть профиль Отправить личное сообщение для DziD Найти все сообщения от DziD
  № 1  
DziD

Регистрация: Sep 2010
Сообщений: 5
По умолчанию В чем ошибка?

Всем привет!

Делаю спрайтовую анимацию (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 - массив индексов для анимации (порядок в котором должны выводиться картинки)..Все остальное должно быть понятно

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

Нажимаешь на клавишу объект двигается и замирает, затем продолжает двигаться нормально, как сделать так чтобы изначально объект не замирал?