Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 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 - массив индексов для анимации (порядок в котором должны выводиться картинки)..Все остальное должно быть понятно

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

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

Создать новую тему   Часовой пояс GMT +4, время: 20:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:22.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.