AS3: Возможно ли генерировать анимированные листы спрайтов во время выполнения из вектора? - PullRequest
0 голосов
/ 08 февраля 2012

Я хотел бы использовать растровые изображения в моих играх на ActionScript.

Для меня это большое изменение в моем рабочем процессе, так как я всегда использовал Vector, но растровые изображения действительно намного быстрее рендерится при определенных обстоятельствах.Насколько я вижу, 90% всех моих игровых активов могут быть растровыми изображениями.

Во-первых, есть ли хорошие инструменты для работы с Vector в BitmapData?Библиотеки или утилиты OpenSource?

Я знаю, что вы можете просто рисовать BitmapData, и я делаю это, но как насчет Animations?А как насчет мувиклипа смеющейся коровы?Как я могу отобразить этот MovieClip во время выполнения в какую-то версию Bitmap?

Но более сложная, чем эта ... Как насчет ситуаций, когда у вас нет MovieClip в необработанном виде?

Представьте, что 10000 шестеренок вращаются с той же скоростью, что и код.Это тяжелая работа для процессора, поэтому рисование его на растровое изображение в течение 1 оборота заменит 10000 зубцов на SpriteSheet.Я мог бы уничтожить винтики и сохранить SpriteSheet.

Может кто-нибудь предложить мне какие-либо ресурсы или ключевые слова Google, которые я могу найти, не уверенный в технике, но, кажется, это имеет смысл?Особенно со Starling ..... Мои Векторы в какой-то момент должны стать SpriteSheets.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 09 февраля 2012

Основной процесс преобразования фрагмента ролика в спрайт-лист:

  1. Выберите мувиклип.
  2. Получить границы клипа. Вам нужно получить ширину и высоту самого широкого и самого высокого кадра анимации.
  3. получить количество кадров мувиклипа.
  4. Создайте новый объект bitmapdata, ширина которого равна числу кадров, умноженному на ширину кадра. И так высоко, как один кадр. 5 переберите каждый кадр клипа и вызовите bitmapData.draw () для каждого кадра. Не забудьте сместить матрицу команды рисования в каждом кадре на ширину одного спрайтового кадра.

Конечным результатом будет один объект растровых данных с каждым отрисованным ему кадром.

Оттуда вы можете следовать этому руководству по блиттингу. http://www.8bitrocket.com/2008/07/02/tutorial-as3-the-basics-of-tile-sheet-animation-or-blitting/

1 голос
/ 08 февраля 2012

Преобразование таблиц спрайтов в растровые изображения во время выполнения - не совсем тривиальная задача, и вам лучше подготовить свои таблицы спрайтов перед компиляцией и использовать интегрированную среду с движком, таким как Flixel или Flashpunk (я не очень знаком со Starling, но это тоже подойдет, я полагаю). Есть несколько приличных конвертеров MovieClip / SWF в png:

Однако, если вы намереваетесь создавать спрайт-листы во время выполнения, вы, вероятно, можете повторно использовать некоторый код из Zoe (это открытый исходный код). Взгляните на класс CaptureSWF , в частности capture() и handleVariableCaptureFrames(). Эти методы являются основой для преобразования отдельных кадров MC в BitmapData, которые затем можно использовать для создания таблиц спрайтов.

...