![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Dec 2009
Сообщений: 25
|
Добрый день!
Описываю ситуацию. Имеется скелет анимации, созданный в среде Flash, таким образом, что на сцене помещается несколько объектов типа Graphic, каждый из которых внутри содержит несколько MovieClip-ов. Каждый MovieClip содержит от одного до нескольких Shape-ов, соответствующих разным вариантам отображения элементов скелета. Затем эти объекты анимируются средствами объектов Graphic (т.е. таймлайн меняется не у MovieClip-ов, а у Graphic-ов). После чего эта сцена экспортируется в SWF-ку. Эта SWF-ка должна подгружаться Flex-овским приложением, в котором в завимиости от условий все Shape-ы загруженной SWF-ки должны быть заменены на соответствующие спрайты (скины), чтобы из одного скелета можно было получить несколько разных персонажей. Проблема появляется когда я подгружаю SWF-ку с анимацией (динамически loader-ом) во Flex-овское приложение, рекурсивно пробегаю по всем объектам на сцене и заменяю все нужные объекты спрайтами (по имени instance-а). Выясняется, что иерархия в этой SWF-ке не такая: объекты типа Graphic в ней отсутствуют, т.е. на сцену сразу помещаются MovieClip-ы, но только те, которые присутстуют в первом кадре. По мере проигрывания в ключевых кадрах анимации MovieClip-ы на сцене меняются: одни добавляются, другие удаляются, причем именно удаляются, а не скрываются, т.к. в кадрах, в которых участуют те же спрайты, что и в первом, удаленные мной Shape-ы снова рисуются. И более того, при зацикливании анимации, когда она возвращается на первый кадр, моих спрайтов там уже нет, всё возвращается в исходное состояние. Без использования Graphic-ов (т.е. если анимируются непосредственно MovieClip-ы) всё работает отлично, но переделывать уже готовые анимации представляется довольно сложной задачей, которой хотелось бы избежать. так вот вопрос как, собственно, заменить шейпы моими спрайтами? я пытался в качестве эксперимента подписаться на событие ENTER_FRAME и заменять спрайты в каждом кадре. результаты это, конечно, дало (если не обращать внимания на высоковатую загруженность CPU), но вылезла еще одна проблема. Дело в том, что аниматор использовал одни и те же шейпы в нескольких местах (например, если у персонажа 4 ноги, для каждой из них может использоваться один и тот же шейп), что не дает возможности просто прицепить MovieClip-ам на сцене спрайты скинов (типа mc.addChild(skin)), т.к. спрайт в каждый момент времени может быть дочерним объектом только одного DisplayObjectContainer-а идеальным выходом видется замена не instance-ов на сцене, а их символов в библиотеке загруженной SWF-ки. (ситуащия как бы противоположная описанной тут: http://newmovieclip.wordpress.com/20...-in-flash-cs3/) Такая возможность вообще существует? или может есть какие-то другие решения? |
|
|||||
|
Я как-то так делал:
- cоздается пустой MovieClip в библиотеке (начнем с ноги) - импортируется некое изображение ноги - в пустой мувиклип запихивается наше изображение - изображению внутри клипа-контейнера задаются координаты x = 0, y = 0 - ... повторяем операцию, создавая контейнер (пустой mc) и контент (изображение) и помещая одно в другое - создаем еще один мувик в библиотеке, называем его Skeleton и прописываем класс Skeleton - внутри Skeleton перетаскиваем наши контейнеры (именно контейнеры с картинками, а не сами картинки) - каждый контейнер в Skeleton как-то обзываем (instance-name) - производим анимацию наших "частей тела" ... - тупо удаляем из библиотеки наши картинки =) В итоге мы имеем анимированные контейнеры. Далее создаем класс Skeleton.as, внутри которого пишем что-то типа: Цитата:
__________________
...вселенская грусть |
|
|||||
|
strange mood
|
Собственно картинки можно не удалять, а оставить какие-нибудь dummy конечности, для удобства просмотра и редактирования. А в конструкторе скелета просто чистить контейнеры. Этот прием используется в стандартных флэшовых компонентах.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
Регистрация: Dec 2009
Сообщений: 25
|
Цитата:
хотя, если других вариантов нет, видимо придется ![]() |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Один вопрос - что такое Graphic?
Судя по тому что в нем есть таймлайн - это какой-то класс-наследник МувиКлипа?
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 400
|
Wolsh
Цитата:
|
|
|||||
|
Регистрация: Feb 2008
Сообщений: 890
|
Ыыыы... смешная тема - каждый думает о чем-то своем)))))))
__________________
скриптограф |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 400
|
Оу... Все, конец рабочей недели сказался))) отменяю вопрос.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 10:29. |
|
|
« Предыдущая тема | Следующая тема » |
|
|