Анимaции создaния и уничтoжeния oбъeктoв

То что касается флеша, но не касается ВКонтакте API. Например проблемы при создании прыгающего мячика.
Ответить
Agiliter
Сообщения: 112
Зарегистрирован: 01 фев 2014, 13:46

Анимaции создaния и уничтoжeния oбъeктoв

Сообщение Agiliter »

Добрый день! Есть набор различных объектов Моделей животных. У каждого вида животных свой набор поведений, но все они наследуют от класса Модель-Животное. Соответственно, каждому животному нужно свое Представление. Не придумал ничего лучше, как сделать Общий класс Вид-Животное и от него отнаследовать различные Виды, свои для каждой модели.

Каждое животное при появлении своей модели диспатчит событие создания. Главная вьюшка ловит его и создает соответствующий вид Предсталения. Проблема в чем - нужно задать каждому представлению анимацию (или звук) создания и уничтожения, но я не представляю как это правильно сделать. Грубо говоря, в каждом Представлении наследнике Вида-Животного я задаю функцию create() и destroy() и внутрь помещаю соответствующую анимацию (звук) создaния/уничтoжeния.

Тогда порядок такой: в главной модели создается модель Животного и заносится в список живых животных -> модель диспатчит событие своего создания -> главная вьюшка ловит событие, создает соответствующее представление, передавая в него модель, и добавляет вьюшку в список существующих представлений -> через какое-то время животное умирает и диспатчит событие своей смерти -> главная модель удаляет из списка живых животное -> соответствующее представление вызывает функцию проигрывания анимации уничтожения. Верно? Смущает, что Модель уже удалена, а представление еще нет. Не докурю как правильно сделать уничтожение.
XELAD
Сообщения: 205
Зарегистрирован: 17 июл 2012, 05:25

Re: Анимaции создaния и уничтoжeния oбъeктoв

Сообщение XELAD »

Почему-то вас смущает разделение обязанностей, хотя оно у вас повсюду. Вон "главная вьюшка ловит... создает..., передавая..., и добавляет", вместо того, чтобы просто добавить экземпляр класса на сцену. Вы сами себе создали "двойную бухгалтерию", поэтому у вас и будет - один создаёт, другой диспатчит, третий анимирует.
Agiliter
Сообщения: 112
Зарегистрирован: 01 фев 2014, 13:46

Re: Анимaции создaния и уничтoжeния oбъeктoв

Сообщение Agiliter »

XELAD писал(а):Вы сами себе создали "двойную бухгалтерию", поэтому у вас и будет - один создаёт, другой диспатчит, третий анимирует.
Разделение на модель-вид вынужденное, ибо у каждой модели может быть минимум три типа представлений.

Вопрос был в другом. Как обычно делаются анимации создания/уничтожения? Ведь сначала должны проиграться эффекты создания, а лишь затем добавится само представление. И при уничтожении объект должен удалиться из главной модели и убраться со сцены и при это проигрывается уничтожение.

И еще вопрос по этим же анимациям/звукам. Для их проигрывания я написал AnimationManager и SoundManager соответственно. В конструкторы обоих классов передается некий глобальный таймер, подписываясь на который анимации и проигрываются. Типа

Код: Выделить всё

timer:Timer = new Timer(1000);animationManager:AnimationManager = new AnimationManager(timer);animationManager.create("animation1"); 
И тогда при запуске глобального таймера анимации запускаются, при остановке останавливаются и т.д. Это хороший вариант? Я пытаюсь уйти от использования локальных таймеров.
XELAD
Сообщения: 205
Зарегистрирован: 17 июл 2012, 05:25

Re: Анимaции создaния и уничтoжeния oбъeктoв

Сообщение XELAD »

Вариантов много, к примеру: создать класс Effects, который создавать вместо объекта, и в который передавать то, что нужно сделать в конце анимации (создать объект сначала). Эффект проиграет анимацию, добавит объект, удалит себя. Когда объект "умрёт", создание другого экземпляра Effects, который проиграет анимацию уничтожения и удалит себя.

Да, ваш глобальный таймер пока неплох. Не забудьте добавить условие, чтобы специально остановленные анимации не включались при выключении паузы.
Ответить