Регистрация: Nov 2006
Адрес: *.kh.ua
Сообщений: 19
|
Сценарии эффектов
Собственно, задумался я над такой мыслю - работаю сейчас над одним проектом с кучей кастомовых элементов управления. Естественно, всё нужно сделать красиво, чтобы всё футуристично выезжало / заезжали, исчезало, становилось полупрозрачным и так далее.
Возникла необходимость в автоматизации эффектов. Например, есть у нас три текстовых поля, которые должны выезжать из-за верхенго угла экрана, занимать свои места по центру экрана и потом из полупрозрачных становиться непрозрачными (alpha = 0.3 -> alpha = 1). Вся эта нехитрая анимация состоит из действий:
1. выезд первого элемента на центр экрана
2. пауза 1000 мс
3. выезд второго элемента на центр экрана
4. пауза 1000 мс
5. выезд третьего элемента на центр экрана
6. пауза 1000 мс
7. Одновременное постепенное изменение alpha всех троих текстовых полей.
Естественно, чем сложнее компонент, чем больше его составляющих (есть у меня, к примеру, анимированный комбобокс), тем больше нужно эффектов писать.
Ну, и сел я за написание классов для автоматизации анимации.
Класс FxSet, скажем, содержит поле targets, которое является массивом объектов типа UIComponent (это, собственно, ссылки на объекты, к которым будут применяться эффекты), поле effects, которое является массивом объектов типа Fx (занимается, собственно, самой реализацией эффекта).
(Fx)
|- MoveFx
|- ScaleFx
|- FadeFx
|- RotateFx
|- SoundFx
MoveFx, ScaleFx, FadeFx, RotateFx, SoundFx - наследники класса Fx. Каждый наследник обладает ф-цией start(), что запускает эффект. Каждый эффект имеет свою длительность и специфичные параметры (х, у координаты, значения альфа-канала и т.д...).
В массиве targets объекта FxSet каждый элемент UIComponent имеет поле типа Number - номер группы, чтобы можно было ссылаться на то, к каким именно компонентам должен применяться эффект.
Можно настроить FxSet, чтобы эффекты применялись к визуальным компонентам по очереди или одновременно, в асинхонном режиме или с ожиданием завершения предыдущего эффекта.
Описание такого сценария эффектов можно поместить в XML-документ и передавать объекту FxSet этот XML-код. После этого достаточно лишь добавить в FxSet targets и запустить всё это действо.
..................
Собственно, сам вопрос... Предложенная мною система очень сложна и громоздка. Стоит ли вообще её юзать для создания сценария эффектов (в компоненте FxSet можно устанавливать последовательность эффектов) или есть уже готовые средства ActionScript 3, про которые я не знаю? Написание подобной вещи займет массу времени, к тому же, даже будучи написанной эта система будет довольно громоздка (чтение сценария из XML займет некоторое время, плюс насоздаётся куча объектов, что будет нагрузкой на ресурсы, плюс размер самого ролика увеличится...).
Стоит ли вообще этим заниматься или разработчики ActionScript 3 создали более простую альтернативу?
За любую помощь буду очень благодарен.
Последний раз редактировалось deep_freeze; 15.06.2007 в 17:13.
|