![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2014
Сообщений: 558
|
Добрый день.
Возник вопрос, для улучшения производительности. Например, допустим я программирую что-то типо взрыва (разлёт объектов), т.е. создаю некоторое количество спрайтов и AS3 пишу их поведение. Так же в этом коде я меняю альфу и размеры объектов, соответственно в какой-то момент это ест довольно много ресурсов. Так вот, думаю несколько оптимизировать всё это и взять отдельно "взрыв", создать из него мувиклип, наделать с 10-ток вариантов и просто использовать как обычный мувик. Это позволит полностью избавиться от неплохого куска кода. Но вот и вопрос, рисовать в ручную - не вариант, хочется плавности в теже 60 кадров/секунду. Вот и вопрос, а есть ли возможность запустить анимацию и сделать из неё мувик? |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 2,283
|
записать анимацию каким-нибудь скринграбером и вставить в новый мувиклип.Но это не путь силы.
|
|
|||||
|
Цитата:
Для этой цели лучше какой-нибудь движок частиц использовать. Если речь о простом флеше (а судя по всему это так), то можно попробовать FLINT |
|
|||||
|
neonoviiwolf, а в чём проблема? Создаёшь битмапдату с размерами
ширинаЖелаемогоСпрайта:высотаЖелаемогоСпрайта*кол-во кадров, копируете в ряд снимки bitmapData.draw(), это ест ресурсы очень хорошо, поэтому лучше заранее это делать, вместе с загрузкой приложения. затем создаёте класс, который будет наследовать битмапдату и хранить эту анимацию, и в нём каждый кадр с помощью метода copyPixels копируете кадры каждый в своё место, но только не забывайте очищать bitmapData перед копированием. конечно, всё можно упростить до хранения массива битмапдат, но мне кажется, что первый вариант будет работать быстрей.
__________________
There is no thing in this world that is not simple. |
|
|||||
|
Да не надо этого делать. Ни copyPixels() ни draw(). Зачем что-то там копировать и очщать, когда можно просто поменять ссылку на саму битмапдату. У меня обычно спрайтовая анимация так и работает, есть кадр (Bitmap), у которого в нужный момент просто заменяется битмапдата. Работает шустро и нареканий нет
|
|
|||||
|
Цитата:
Ну или да, разок использовать copyPixels на старте, чтобы поделить атлас на отдельные объекты bitmapData, которые потом и втыкать в кадр. При первом подходе можно организовать асинхронную загрузку игры, с показом прогресса, и не будет подвисания при изначальной сборке анимации. Во втором, если много данных, будет временное подвисание. Но зато не нужно складывать множество картинок для отдельной загрузки |
|
|||||
|
caseyryan, у автора темы есть готовый код симуляции взрыва или чего-то там, он хочет просто сделать десяток анимированных спрайтов из этого кода.
__________________
There is no thing in this world that is not simple. |
|
|||||
|
Регистрация: Jun 2014
Сообщений: 558
|
ZackMercuryда-да, верно. Анимация уже есть, рандомное количество частиц разлетается в рандомное направление, при этом изменяют свои размеры и альфу, таких штук может возникать и 5 в секунду, соответственно в игрушке каждый раз неплохое количество ресурсов ЦП ест, вот и пришла идея, просто накляпать с десяток мувиков, где всё это уже зарисовано, уверен, что показать с десяток рисунков для ЦП проще, чем просчитывать каждый раз всё по новому. НО всё должно быть видно, что мувик не перекрывает. Ну как в png и jpeg, если в png что-то не закрышивать, то спрайт в том месте будет прозрачным, а если перевести в jpeg и сделать спрайт, то будет белым.
Игрушку саму пишу в FD, вот и думаю в adobe professional CC сварганить мувик, выгрузить в библиотеку и готово. Ток вот и появился вопрос, как объяснить СС, что мне вот из этой анимации надо сделать мувик в 3 секунды (180 кадров) |
![]() |
![]() |
Часовой пояс GMT +4, время: 05:34. |
|
|
« Предыдущая тема | Следующая тема » |
|
|