![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Никогда раньше не доводилось работать с таким типом персонажей, и тут я зашел в тупик просто.
Вобщем ситуация такая: мне прислали fla файл со сложной анимацией персонажа. В анимации 10 - 15 слоев, на каждом слое находится какая-то одна часть персонажа, например голова или рука. Эта часть представляет из себя объект Graphics (дизайнер далек от программирования, поэтому не сделал сразу как надо ) ). На каждом слое множество ключевых кадров, поэтому мне приходится в каждом ключевом кадре переделывать объект в MovieClip и давать ему instance name (что конечно дико напрягает, но писать jsfl скрипт будет дольше, чем вручную переименовать), но проблема даже не в этом. Допустим задал я торсу персонажа имя экземпляра torso на первом ключевом кадре, потом у себя в коде мне нужно добавить к торсу бронежилет. Первое что пришло в голову - просто удалить ребенка на нулевом индексе и добавить туда бронежилет. Но не тут то было. Естественно при проигрывании анимации бронежилет останется только на первом кадре. Т.е. добавлять его прийдется в каждом кадре, что больше походит на костыль. Вторая идея была заменить растровые данные. Но getChildAt(0) возвращает Shape, а не Bitmap, хотя во флещке они добавлены как png картинки. Вопрос, как лучше сделать, чтобы можно было заменять внешний вид этих частей? В самой adobe flash я не очень соображаю, в основном работаю с кодом. |
|
|||||
|
Модрон-ветеринар
|
Если я правильно понял суть трудности и речь идет о символе Graphics, попробуй так:
1. Находишь в библиотеке этот символ. Открываешь его для редактирования. 2. Выделяешь всю начинку и преобразовываешь в мувик по F8 *. Получается мувик, вложенный в Graphics. Это ключевой момент решения. Задаешь мувику имя экземпляра. Теперь не надо везде руками что-то менять по всему проекту. Везде, где на сцене есть этот символ, начинка изменится соответственно - во всех ключевых кадрах будет присутствовать видоизмененный символ, внутри которого есть мувик, к тому же с нужным имением экземпляра.** 3. Теперь в этот символ ты можешь добавить также какой-то дополнительный элемент. Как очевидно - дополнительный элемент появится во всех экземплярах. --------- * Можно, если что, эту начинку раскидать по слоям автоматически - в контекстном меню есть такой пункт. ** Это имя будет доступно в той же общей области видимости, поскольку символы Graphics не вносят изменения в путь, а служат, по большому счету, только для группировки и образования дополнительного таймлайна.
__________________
Идите первым! Последний раз редактировалось mooncar; 10.01.2013 в 11:39. |
|
|||||
|
Как на счёт расширений?
http://flash-animated.com/plaginy-dl...lash-extension смотреть в сторону "Milti Swap" и "Multi Name" |
|
|||||
|
Регистрация: Dec 2009
Сообщений: 125
|
Ну если слоев 10-15, а перс 1, можно ж просто вырезать слои с таймлайна по одному и вставить в новые клипы.
|
|
|||||
|
spirit2, я это уже сделал, проблема малость в другом. Мне надо внутри подвижных частей графику менять с помощью кода, а не во флеш иде.
mooncar, в мувиклипы я их конвертирую, с этим никаких проблем (за исключением того, что много где приходится вручную конвертировать), но в том и проблема, что при проигрывании анимации как только доходит до ключевого кадра, все в нем будет по умолчанию, и никакого моего объекта добавлено не будет. Т.е. для программы это совершенно другой экземпляр. Интересно почему этот шейп нельзя битмапом сделать... FlashRus, что-то даже не вижу каким образом здесь может понадобиться этот плагин |
|
|||||
|
Модрон-ветеринар
|
Цитата:
__________________
Идите первым! |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Не знаю, единственно верное ли это решение, но надо было делать анимацию motion tween'ом. Причем анимировать не сам элемент, а контейнер, и в контейнере уже заменять графику.
|
|
|||||
|
Регистрация: Jan 2009
Сообщений: 1,651
|
Ну как самый простой способ, раз уж ты конвертировал графику в мувики, то почему бы не сделать так:
вот мувик с анимацией персонажа "character", в нем именованный мувик торса "torso". Тогда в первом кадре мувика torso пусть будет голый торс, во втором кадре - торс в бронике и т.д. Тогда для того, чтобы сменить голый торс на одетый надо просто выполнить character.torso.gotoAndStop(2); вот так, скажем, в Sonny сделано. Второй способ. Пишем jsfl скрипт для flash ide, который проходится по каждому кадру анимации и собирает для каждого кадра для каждого мувика вектор положения, масштаб, альфу - короче всю анимируемую инфу для каждого мувика в каждом слое, и пишет в, не знаю, xml или json, какой-нибудь свой формат. Потом эти данные переносим в нашу игрушку и просто программно покадрово анимируем нашего персонажа, руководствуясь данными, заменяя при этом мувики как надо. Такой способ подойдет для более сложных анимаций, где, скажем клип torso то появляется, то исчезает.
__________________
мой пустой блог |
|
|||||
|
Цитата:
Цитата:
Цитата:
С jsfl вариант не самый удобный, но как вариант оставлю. Если никак подругому сделать не получится. |
|
|||||
|
Модрон-ветеринар
|
Значит внутри Graphics сделать не один мувик, а еще один мувик-контейнер. Слоеный пирог.
Итого Graphics //его экземпляры везде └ MovieClip (instance-name1) //к этому обращаться └ MovieClip (instance-name2) //это динамически менять Цитата:
__________________
Идите первым! |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:03. |
|
|
« Предыдущая тема | Следующая тема » |
|
|