Класс BitmapText в PixiJS
предназначен для рендеринга текста с использованием заранее
подготовленных битмап-шрифтов. В отличие от стандартного текстового
объекта Text, BitmapText не рендерит символы
через Canvas или WebGL динамически, а использует готовые изображения
каждого символа, что значительно повышает производительность при большом
объёме текста и анимациях.
Ключевая особенность — использование текстур из атласа. Каждому символу соответствует отдельный фрейм в JSON- или XML-описании шрифта (формат BMFont). Это позволяет минимизировать количество операций отрисовки и обеспечивать точное позиционирование каждого символа на экране.
Для создания объекта используется конструктор:
const bitmapText = new PIXI.BitmapText("Привет, мир!", {
fontName: "Desyrel",
fontSize: 36,
tint: 0xffffff,
align: "center",
letterSpacing: 2,
maxWidth: 400
});
PIXI.BitmapFont.from."left",
"center", "right".Перед использованием шрифта необходимо зарегистрировать его в PixiJS:
PIXI.BitmapFont.from("Desyrel", {
fill: "#ffffff",
fontSize: 36,
padding: 10
});
.fnt и атлас .png.BitmapText строится как набор спрайтов, каждый
символ — отдельный объект PIXI.Sprite, объединённый в
контейнер. Это даёт несколько преимуществ:
Недостаток — текст не редактируется динамически так же легко, как
стандартный Text. Для изменения текста нужно присвоить
новое значение свойству text или пересоздать объект:
bitmapText.text = "Новый текст";
bitmapText.updateTransform();
Основные свойства:
text — содержимое текста.fontName — имя шрифта.fontSize — размер шрифта.align — выравнивание.letterSpacing — интервал между символами.maxWidth — ограничение ширины строки.Методы:
updateTransform() — пересчитывает позиции символов
после изменения текста или свойств.destroy({ children, texture, baseTexture }) —
корректная очистка ресурсов.Дополнительные возможности:
tint для динамического изменения цвета
текста.Если maxWidth задан, строки автоматически переносятся.
Выравнивание регулируется свойством align. Пример:
const longText = new PIXI.BitmapText(
"Это длинный текст, который переносится автоматически при достижении максимальной ширины строки.",
{ fontName: "Desyrel", fontSize: 24, maxWidth: 300, align: "left" }
);
Каждая строка создаётся отдельно и располагается с учётом
межстрочного интервала (lineHeight), который по умолчанию
равен размеру шрифта.
Поскольку каждый символ — спрайт, возможны тонкие анимации, недоступные обычному тексту:
app.ticker.add(() => {
for (let i = 0; i < bitmapText.children.length; i++) {
bitmapText.children[i].rotation += 0.01;
}
});
Можно изменять прозрачность, цвет, масштаб или смещение каждого
символа независимо. Это делает BitmapText идеальным для
игровых интерфейсов, HUD и эффектного отображения
титров.
BitmapText при динамически обновляющемся
тексте с большим количеством символов — это быстрее, чем
CanvasText.Text, чтобы уменьшить размер загружаемых
текстур.Класс BitmapText сочетает высокую производительность, гибкость анимации символов и точное позиционирование, что делает его незаменимым инструментом для сложных интерфейсов и визуально насыщенных приложений на PixiJS.