Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   В чем ошибка? (http://www.flasher.ru/forum/showthread.php?t=144664)

DziD 17.09.2010 18:50

В чем ошибка?
 
Всем привет!

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

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

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

-De- 17.09.2010 19:04

Пуск-панель управления-клавиатура. Задержку перед началом повтора поставить поменьше, скорость повторения поставить поменьше =)

DziD 17.09.2010 19:17

Как вариант! :)

Но не поможет :)))

etc 17.09.2010 21:19

Название темы не отражает сути вопроса.


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

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