PixiJS — это высокопроизводительная библиотека для
работы с 2D-графикой в браузере на JavaScript. Она использует WebGL для
рендеринга, с автоматическим резервным переходом на Canvas при
отсутствии поддержки WebGL. Основной объект для отображения графики —
PIXI.Application, который инкапсулирует
рендерер, сцену и цикл обновления.
Создание приложения выглядит следующим образом:
const app = new PIXI.Application({
width: 800,
height: 600,
backgroundColor: 0x1099bb
});
document.body.appendChild(app.view);
Ключевые моменты:
width и height задают размеры области
рендеринга.backgroundColor задаёт цвет фона в формате
0xRRGGBB.app.view — это <canvas> элемент,
который автоматически создаётся библиотекой.Спрайт представляет собой базовый визуальный элемент в PixiJS. Для
его создания используется класс
PIXI.Sprite, а источник изображения
задаётся через PIXI.Texture.
const texture = PIXI.Texture.from('image.png');
const sprite = new PIXI.Sprite(texture);
sprite.x = 100;
sprite.y = 150;
sprite.anchor.set(0.5); // Центрирование спрайта
app.stage.addChild(sprite);
Особенности работы с текстурами:
anchor задаёт точку привязки спрайта относительно его
текстуры (от 0 до 1).position можно задавать через x и
y или объект sprite.position.set(x, y).scale позволяет изменять размер спрайта по осям
x и y.Для группировки элементов используется
PIXI.Container. Все визуальные объекты
сцены являются наследниками PIXI.DisplayObject, а
контейнеры позволяют создавать сложные иерархии.
const container = new PIXI.Container();
container.addChild(sprite);
app.stage.addChild(container);
container.x = 200;
container.y = 100;
Особенности:
Для отображения текста используется класс
PIXI.Text, который позволяет настраивать
шрифт, цвет, выравнивание и стили.
const style = new PIXI.TextStyle({
fontFamily: 'Arial',
fontSize: 36,
fill: '#ffffff',
stroke: '#ff3300',
strokeThickness: 4,
dropShadow: true,
dropShadowDistance: 6
});
const message = new PIXI.Text('Hello PixiJS', style);
message.x = 400;
message.y = 300;
message.anchor.set(0.5);
app.stage.addChild(message);
Особенности текста:
TextStyle позволяет задавать комплексные стили: тень,
обводку, градиенты.В PixiJS для обновления сцены используется встроенный цикл анимации.
app.ticker.add((delta) => {
sprite.rotation += 0.01 * delta;
});
Особенности ticker:
delta отражает коэффициент изменения времени между
кадрами.PixiJS поддерживает применение фильтров к спрайтам и контейнерам, используя WebGL шейдеры.
const blurFilter = new PIXI.filters.BlurFilter();
sprite.filters = [blurFilter];
blurFilter.blur = 5;
Особенности фильтров:
PixiJS поддерживает интерактивность через события.
sprite.interactive = true;
sprite.buttonMode = true;
sprite.on('pointerdown', () => {
sprite.scale.x *= 1.1;
sprite.scale.y *= 1.1;
});
Особенности интерактивности:
interactive делает объект чувствительным к событиям
мыши и касания.buttonMode изменяет курсор при наведении.pointerdown, pointerup,
pointerover, pointerout и другие.Для оптимизации больших сцен используется:
renderTexture — позволяет рендерить
контейнер в текстуру для повторного использования.batching — объединение нескольких
спрайтов с одинаковой текстурой в один вызов WebGL.culling — отключение рендеринга
объектов за пределами видимой области.const renderTexture = PIXI.RenderTexture.create({ width: 500, height: 500 });
app.renderer.render(container, { renderTexture });
const finalSprite = new PIXI.Sprite(renderTexture);
app.stage.addChild(finalSprite);
PixiJS обеспечивает высокую производительность для 2D-графики и гибкость через спрайты, контейнеры, текстуры и фильтры. Взаимодействие с пользователем, анимация и поддержка WebGL делают её мощным инструментом для игр, визуализаций и интерактивных приложений.