ActionScript - Растеризация векторной графики во время выполнения?

Я разработал кроссплатформенное приложение AIR, которое серьезно работает на мобильных устройствах из-за анимации / использования векторной графики вместо растровых ресурсов. Использование cacheAsBitmapMatrix / cacheAsBitmap лучше, когда и где назначено надлежащим образом, но все же не так быстро, как при использовании растровых активов.

Я попытался bitmapData.draw() векторной графики к объекту Bitmap во время выполнения и вместо этого анимировать объект Bitmap, но это выполняется примерно так же, как (или, может быть, даже точно так же), просто кэшируя векторную графику как битовая карта.

Пользовательский интерфейс Flash Professional 5.5 теперь имеет возможность преобразовывать векторную графику в растровые изображения, но возможно ли это сделать во время выполнения? возможно ли иметь реальную процедуру Rasterize() для преобразования программно нарисованной векторной графики и, возможно, даже редактируемого текста в растровые изображения во время выполнения для оптимальной анимации, особенно на мобильных устройствах?

1 ответ

Решение

Когда вы говорите, что пытались анимировать растровое изображение, я надеюсь, что вы не имели в виду, что вы вращали / изменяли размер растрового изображения - поскольку это медленный процесс.

Возможно, у вас есть движок, который во время загрузки вашей игры создает для вас спрайт-лист на основе кадров в мувиклипе (если есть анимация). Тогда на них могут ссылаться BitmapData.copyPixels(),

Это просто:

  1. Создайте объект BitmapData.
  2. Нарисуйте каждый кадр временной шкалы MovieClips на BitmapData, как если бы вы вручную создавали спрайт-лист.
  3. Сохраните BitmapData в ассоциативном массиве для более легкого доступа, например, sheets["zombie1"]

Вы даже можете повернуть свой объект в цикле for и нарисовать повернутый объект на листе.

Тогда ваш SheetObject будет просто иметь методы для загрузки части ранее определенного листа и его отображения.

Это все на правильном пути?

Другие вопросы по тегам