Как мне подойти к визуализации текста в полностью спрайтовой игре? (ActionScript 3) - PullRequest
2 голосов
/ 09 декабря 2011

Я создал класс Canvas, который имеет массив из нескольких экземпляров CanvasEntity.Каждый из них имеет свойство skin, которое является ссылкой на ранее созданный экземпляр BitmapData, представляющий некоторую графику, которую можно использовать.

Canvas просматривает этот список каждый кадр для выполнениярендер:

  1. lock() холст
  2. Очистить холст с помощью fillRect().
  3. Перебрать вышеупомянутый массив и использовать copyPixels() на каждом изсвойства скинов экземпляров.
  4. unlock() canvas.

Это все хорошо, но теперь я немного не уверен в том, как лучше подойти для рендеринга текста в том же духе.fashion.

Нужно ли мне создавать спрайт-лист со всеми моими глифами, как я делаю для всех фреймов любого другого объекта?Или есть более простой способ создания фрагмента BitmapData, который будет представлять их?

Создание листов спрайтов кажется болезненным, поскольку для визуализации каждого глифа должны быть отдельные объекты.

Пока у меня есть спрайт:

enter image description here

Ответы [ 2 ]

0 голосов
/ 10 декабря 2011

Вам не нужен отдельный объект для каждого персонажа.Если вы хотите недорогое отображение текста, имейте один класс, который расширяет CanvasEntity и принимает строку в конструкторе, копирует соответствующие данные из таблицы спрайтов в скин.

0 голосов
/ 09 декабря 2011

Средняя игра не содержит столько текста. Обычно это не критичная для производительности часть, которая требует значительной оптимизации. Вы можете просто создать обычный спрайт, добавить TextField с нужным вам текстом и стилем и скопировать эту графику на холст. Может быть, чекать текстовую графику, если она вам нужна чаще.

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

...