Решает он следующую задачу. На сцене есть некоторое множество клипов. Процесс работы приложения делится на этапы. На каждом этапе, клипы принимают различные положения, масштабируются и поворачиваются. Переходы между этапами - плавные. Клипы каким-либо образом плавно трансформируются занимают новое положение.
Итак, необходимо задать параметры трансформации клипов для каждого этапа. Напрашивается решение - создать массивы параметров трансформации для каждого этапа. При каждой смене этапа, выполнять твин для клипов, соответствующих элементам массива.Но как создать такой массив с наименьшими затратами? Вручную высчитывать координаты, масштаб и угол поворота - задача не для слабонервных (к которым мы все относимся :) ).
Решение: Создаем таймлайн, в котором каждый фрейм соответствует этапу. Во фреймах располагаем наши клипы в надлежащих положениях. Важно, чтобы количество и имена клипов не изменялись (иначе на каких-то этапах клипы будут отображаться некорректно, хотя, эту особенность тоже можно использовать в своих целях).
Создаем массив для сбора трансформаций.Каждый элемент массива, это характеристика одного этапа. Это может быть ассоциативный массив, у которого в качестве ключей используются идентификаторы этапов. Он содержит идентификатор этапа и массив трансформаций клипов на этом этапе.
Каждый элемент массива трансформаций содержит имя клипа параметры его трансформации. Это может быть ассоциативный массив, у которого в качестве ключей используются имена клипов.
В итоге получаем двумерный массив. По Y - этапы, по X - клипы.Теперь Для каждого фрейма делаем сканирование for..in
, получаем параметры трансформации клипов и заполняем наш массив. Можно контролировать сбор информации, указав функционально-специфичные имена для различных групп клипов.
В последнем фрейме (последнего этапа) нужно вызвать функцию окончания сканирования. Эта функция должна позиционировать основной клип на начальный этап и остановить. В качестве начального, можно выбрать любой из этапов (идентификатор которого как раз можно передать в качестве параметра функции окончания сканирования).
На этом, навигация по таймлайну заканчивается. Вся анимация отдается в руки программного твина. При вызове функции перехода на новый этап, из массива этапов выделяется соответствующий элемент с массивом трансформаций. Всем клипам, полученным при переборе массива трансформаций назначается твин с соответствующими параметрами.
Изложенное на словах проще выразить в коде :). Постараюсь выложить.
1 комментарий:
Восхищен
Отправить комментарий