![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2009
Адрес: kup78.livejournal.com
Сообщений: 84
|
Как лучше организовать объект с несколькими состояниями, каждое из которых имеет свою анимацию?
|
|
|||||
|
strange mood
|
Присоединяюсь к вопросу, хотелось бы узнать промышленное решение. А то юзаю для этих целей либо код на кадрах, либо addFrameScript - по сути то же самое.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
Мне тоже интересно кто как делает. Сам для этой цели обычно юзаю паттерн state. Для каждого состояния, есть примерно такой код (это псевдокод, если что):
class RunState extends State { function RunState::init() : void { m_startFrame = "run_begin"; m_endFrame = "run_frame"; m_looped = true; } // bla bla bla... } // Дальше где-то в контексте class MyObject extends Stateable { function changeState(state : State) : void { state.init(); state.setContext(this); m_animation.gotoAndPlay(state.m_startFrame); } } |
|
|||||
|
Я раньше так делала
public class MyClass extends Sprite { public static const ST_STATE1 :int = 1; public static const ST_STATE2 :int = 2; public static const ST_STATE3 :int = 3; private var state : int; public function MyClass() { super(); this.addEventListener(Event.ENTER_FRAME, enterFrameHandler); } public function set State(value :int){ state = value; switch(state){ case ST_STATE1: // some actions break; case ST_STATE2: // some actions break; case ST_STATE3: // some actions break; } } public function get State():int{ return state; } private function enterFrameHandler(event :Event):void{ // если надо что делать switch(state){ case ST_STATE1: // some actions break; case ST_STATE2: // some actions break; case ST_STATE3: // some actions break; } } } |
|
|||||
|
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 16:32. |
|
|
« Предыдущая тема | Следующая тема » |
|
|