Добрый день! Есть набор различных объектов Моделей животных. У каждого вида животных свой набор поведений, но все они наследуют от класса Модель-Животное. Соответственно, каждому животному нужно свое Представление. Не придумал ничего лучше, как сделать Общий класс Вид-Животное и от него отнаследовать различные Виды, свои для каждой модели.
Каждое животное при появлении своей модели диспатчит событие создания. Главная вьюшка ловит его и создает соответствующий вид Предсталения. Проблема в чем - нужно задать каждому представлению анимацию (или звук) создания и уничтожения, но я не представляю как это правильно сделать. Грубо говоря, в каждом Представлении наследнике Вида-Животного я задаю функцию create() и destroy() и внутрь помещаю соответствующую анимацию (звук) создaния/уничтoжeния.
Тогда порядок такой: в главной модели создается модель Животного и заносится в список живых животных -> модель диспатчит событие своего создания -> главная вьюшка ловит событие, создает соответствующее представление, передавая в него модель, и добавляет вьюшку в список существующих представлений -> через какое-то время животное умирает и диспатчит событие своей смерти -> главная модель удаляет из списка живых животное -> соответствующее представление вызывает функцию проигрывания анимации уничтожения. Верно? Смущает, что Модель уже удалена, а представление еще нет. Не докурю как правильно сделать уничтожение.
Анимaции создaния и уничтoжeния oбъeктoв
Re: Анимaции создaния и уничтoжeния oбъeктoв
Почему-то вас смущает разделение обязанностей, хотя оно у вас повсюду. Вон "главная вьюшка ловит... создает..., передавая..., и добавляет", вместо того, чтобы просто добавить экземпляр класса на сцену. Вы сами себе создали "двойную бухгалтерию", поэтому у вас и будет - один создаёт, другой диспатчит, третий анимирует.
Re: Анимaции создaния и уничтoжeния oбъeктoв
Разделение на модель-вид вынужденное, ибо у каждой модели может быть минимум три типа представлений.XELAD писал(а):Вы сами себе создали "двойную бухгалтерию", поэтому у вас и будет - один создаёт, другой диспатчит, третий анимирует.
Вопрос был в другом. Как обычно делаются анимации создания/уничтожения? Ведь сначала должны проиграться эффекты создания, а лишь затем добавится само представление. И при уничтожении объект должен удалиться из главной модели и убраться со сцены и при это проигрывается уничтожение.
И еще вопрос по этим же анимациям/звукам. Для их проигрывания я написал AnimationManager и SoundManager соответственно. В конструкторы обоих классов передается некий глобальный таймер, подписываясь на который анимации и проигрываются. Типа
Код: Выделить всё
timer:Timer = new Timer(1000);animationManager:AnimationManager = new AnimationManager(timer);animationManager.create("animation1");
Re: Анимaции создaния и уничтoжeния oбъeктoв
Вариантов много, к примеру: создать класс Effects, который создавать вместо объекта, и в который передавать то, что нужно сделать в конце анимации (создать объект сначала). Эффект проиграет анимацию, добавит объект, удалит себя. Когда объект "умрёт", создание другого экземпляра Effects, который проиграет анимацию уничтожения и удалит себя.
Да, ваш глобальный таймер пока неплох. Не забудьте добавить условие, чтобы специально остановленные анимации не включались при выключении паузы.
Да, ваш глобальный таймер пока неплох. Не забудьте добавить условие, чтобы специально остановленные анимации не включались при выключении паузы.