Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Общие вопросы о Flash (не затрагивающие ActionScript)

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.01.2013, 10:45
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 1  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Question Как заменить объект внутри клипа в сложной анимации?

Никогда раньше не доводилось работать с таким типом персонажей, и тут я зашел в тупик просто.
Вобщем ситуация такая: мне прислали fla файл со сложной анимацией персонажа. В анимации 10 - 15 слоев, на каждом слое находится какая-то одна часть персонажа, например голова или рука. Эта часть представляет из себя объект Graphics (дизайнер далек от программирования, поэтому не сделал сразу как надо ) ). На каждом слое множество ключевых кадров, поэтому мне приходится в каждом ключевом кадре переделывать объект в MovieClip и давать ему instance name (что конечно дико напрягает, но писать jsfl скрипт будет дольше, чем вручную переименовать), но проблема даже не в этом.

Допустим задал я торсу персонажа имя экземпляра torso на первом ключевом кадре, потом у себя в коде мне нужно добавить к торсу бронежилет. Первое что пришло в голову - просто удалить ребенка на нулевом индексе и добавить туда бронежилет.
Но не тут то было. Естественно при проигрывании анимации бронежилет останется только на первом кадре. Т.е. добавлять его прийдется в каждом кадре, что больше походит на костыль. Вторая идея была заменить растровые данные. Но getChildAt(0) возвращает Shape, а не Bitmap, хотя во флещке они добавлены как png картинки.

Вопрос, как лучше сделать, чтобы можно было заменять внешний вид этих частей? В самой adobe flash я не очень соображаю, в основном работаю с кодом.

Старый 10.01.2013, 11:19
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Если я правильно понял суть трудности и речь идет о символе Graphics, попробуй так:
1. Находишь в библиотеке этот символ. Открываешь его для редактирования.
2. Выделяешь всю начинку и преобразовываешь в мувик по F8 *. Получается мувик, вложенный в Graphics. Это ключевой момент решения. Задаешь мувику имя экземпляра.
Теперь не надо везде руками что-то менять по всему проекту. Везде, где на сцене есть этот символ, начинка изменится соответственно - во всех ключевых кадрах будет присутствовать видоизмененный символ, внутри которого есть мувик, к тому же с нужным имением экземпляра.**
3. Теперь в этот символ ты можешь добавить также какой-то дополнительный элемент. Как очевидно - дополнительный элемент появится во всех экземплярах.

---------
* Можно, если что, эту начинку раскидать по слоям автоматически - в контекстном меню есть такой пункт.
** Это имя будет доступно в той же общей области видимости, поскольку символы Graphics не вносят изменения в путь, а служат, по большому счету, только для группировки и образования дополнительного таймлайна.
__________________
Идите первым!


Последний раз редактировалось mooncar; 10.01.2013 в 11:39.
Старый 10.01.2013, 11:34
FlashRus вне форума Посмотреть профиль Отправить личное сообщение для FlashRus Найти все сообщения от FlashRus
  № 3  
Ответить с цитированием
FlashRus
 
Аватар для FlashRus

Регистрация: Nov 2006
Адрес: СПб
Сообщений: 921
Отправить сообщение для FlashRus с помощью ICQ Отправить сообщение для FlashRus с помощью Skype™
Как на счёт расширений?

http://flash-animated.com/plaginy-dl...lash-extension

смотреть в сторону "Milti Swap" и "Multi Name"

Старый 10.01.2013, 11:58
spirit2 вне форума Посмотреть профиль Отправить личное сообщение для spirit2 Найти все сообщения от spirit2
  № 4  
Ответить с цитированием
spirit2

Регистрация: Dec 2009
Сообщений: 125
Ну если слоев 10-15, а перс 1, можно ж просто вырезать слои с таймлайна по одному и вставить в новые клипы.

Старый 10.01.2013, 13:01
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 5  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
spirit2, я это уже сделал, проблема малость в другом. Мне надо внутри подвижных частей графику менять с помощью кода, а не во флеш иде.
mooncar, в мувиклипы я их конвертирую, с этим никаких проблем (за исключением того, что много где приходится вручную конвертировать), но в том и проблема, что при проигрывании анимации как только доходит до ключевого кадра, все в нем будет по умолчанию, и никакого моего объекта добавлено не будет. Т.е. для программы это совершенно другой экземпляр.
Интересно почему этот шейп нельзя битмапом сделать...
FlashRus, что-то даже не вижу каким образом здесь может понадобиться этот плагин

Старый 10.01.2013, 13:07
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Цитата:
Сообщение от caseyryan Посмотреть сообщение
mooncar, в мувиклипы я их конвертирую, с этим никаких проблем (за исключением того, что много где приходится вручную конвертировать), но в том и проблема, что при проигрывании анимации как только доходит до ключевого кадра, все в нем будет по умолчанию, и никакого моего объекта добавлено не будет. Т.е. для программы это совершенно другой экземпляр.
Может быть я неправильно понял, но я имел ввиду вносить изменения именно в старый символ, экземпляры которого уже находятся на нужных местах, просто залезть в него в библиотеке и отредактировать. Изменения коснутся всех экземпляров этого символа, находящихся на сцене. На которой ничего заменять не придется.
__________________
Идите первым!

Старый 10.01.2013, 13:13
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 7  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Не знаю, единственно верное ли это решение, но надо было делать анимацию motion tween'ом. Причем анимировать не сам элемент, а контейнер, и в контейнере уже заменять графику.

Старый 10.01.2013, 13:47
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 8  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
Код AS3:
 Мне надо внутри подвижных частей графику менять с помощью кода, а не во флеш иде.
Ну как самый простой способ, раз уж ты конвертировал графику в мувики, то почему бы не сделать так:
вот мувик с анимацией персонажа "character", в нем именованный мувик торса "torso". Тогда в первом кадре мувика torso пусть будет голый торс, во втором кадре - торс в бронике и т.д. Тогда для того, чтобы сменить голый торс на одетый надо просто выполнить character.torso.gotoAndStop(2); вот так, скажем, в Sonny сделано.

Второй способ. Пишем jsfl скрипт для flash ide, который проходится по каждому кадру анимации и собирает для каждого кадра для каждого мувика вектор положения, масштаб, альфу - короче всю анимируемую инфу для каждого мувика в каждом слое, и пишет в, не знаю, xml или json, какой-нибудь свой формат. Потом эти данные переносим в нашу игрушку и просто программно покадрово анимируем нашего персонажа, руководствуясь данными, заменяя при этом мувики как надо. Такой способ подойдет для более сложных анимаций, где, скажем клип torso то появляется, то исчезает.
__________________
мой пустой блог

Старый 10.01.2013, 13:48
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 9  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Не знаю, единственно верное ли это решение, но надо было делать анимацию motion tween'ом. Причем анимировать не сам элемент, а контейнер, и в контейнере уже заменять графику
Анимация и так делалась с помощью твинов. Ключевые кадры при этом никуда не делись, и в них по прежнему каждому символу надо давать инстанс нейм. При этом замена графики в одном символе не заменяет ее во всех его экземплярах.
Цитата:
экземпляры которого уже находятся на нужных местах, просто залезть в него в библиотеке и отредактировать.
Это понятно, но мне-то нужно динамически ее менять. Допустим купил игрок новый наплечник, он бац, добавился к персонажу. У меня во флеш девелоп есть только swc библиотека с персонажем.

Цитата:
вот мувик с анимацией персонажа "character", в нем именованный мувик торса "torso". Тогда в первом кадре мувика torso пусть будет голый торс, во втором кадре - торс в бронике и т.д. Тогда для того, чтобы сменить голый торс на одетый надо просто выполнить character.torso.gotoAndStop(2); вот так, скажем, в Sonny сделано.
Не вариант. Этот персонаж во-первых будет очень увесистым, что серьезно прибавит время загрузки игры, а во вторых это сведет к нулю все будущее масштабирование проекта. В моем случае я бы мог просто на сервер выложить какой-то новый предмет, и он бы динамически подгружался в игру, а так я буду вынужден каждый раз фла файл пересобирать.

С jsfl вариант не самый удобный, но как вариант оставлю. Если никак подругому сделать не получится.

Старый 10.01.2013, 13:50
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 10  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Значит внутри Graphics сделать не один мувик, а еще один мувик-контейнер. Слоеный пирог.
Итого
Код:
Graphics //его экземпляры везде
 └ MovieClip (instance-name1) //к этому обращаться
  └ MovieClip (instance-name2) //это динамически менять
Не?

Цитата:
При этом замена графики в одном символе не заменяет ее во всех его экземплярах.
Как-то не понятно. Если изменить в либе один конкретный символ, то все его экземпляры на сцене изменятся соответственно.
__________________
Идите первым!

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:03.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:03.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.