В библиотеке PixiJS свойство tint
используется для изменения цвета спрайтов и других объектов без
необходимости редактировать исходные текстуры. Оно применяется к
объектам типа PIXI.Sprite, PIXI.Graphics и
другим наследникам PIXI.DisplayObject, поддерживающим
цветовую фильтрацию.
Свойство tint представляет собой 16-ричное
значение цвета, объединяющее компоненты красного, зелёного и
синего каналов (RGB). По умолчанию оно равно 0xFFFFFF, что
означает отсутствие изменения цвета. Любое другое значение изменяет
оттенок объекта на заданный цвет.
Пример базового использования:
const sprite = PIXI.Sprite.from('image.png');
sprite.tint = 0xff0000; // красный оттенок
app.stage.addChild(sprite);
В этом примере текстура спрайта приобретает красный оттенок без изменения исходного изображения.
tintСвойство tint работает через умножение цветов
пикселей текстуры на заданный цвет. Если цвет пикселя
(R, G, B) умножить на компоненты tint
(Rt, Gt, Bt), результат будет:
R' = R * Rt / 255
G' = G * Gt / 255
B' = B * Bt / 255
Это означает:
0xFFFFFF не изменяет исходный цвет
текстуры.0x000000 полностью затемняет текстуру.Эта особенность позволяет динамически изменять цвет объектов без создания дополнительных текстур.
tintЦвет в tint можно задавать несколькими способами:
sprite.tint = 0x00ff00; // зелёный
sprite.tint = 65280; // 0x00ff00
const color = PIXI.utils.string2hex('#00ff00');
sprite.tint = color;
Использование функции PIXI.utils.string2hex удобно при
работе с CSS-цветами.
Свойство tint учитывает альфа-канал
текстуры. Прозрачные области остаются прозрачными, а цвет
применяется только к видимым пикселям. При этом смешивание цветов
происходит независимо от текущей прозрачности объекта
(alpha):
sprite.alpha = 0.5;
sprite.tint = 0xff00ff;
Результат: полупрозрачный спрайт с пурпурным оттенком.
tint не изменяет исходную текстуру, поэтому один объект
с разными tint можно использовать повторно.ColorMatrixFilter.PIXI.GraphicsОбъекты PIXI.Graphics также поддерживают
tint. Применение работает аналогично, но нужно учитывать,
что tint применяется ко всему объекту после его
рендеринга:
const graphics = new PIXI.Graphics();
graphics.beginFill(0xffffff);
graphics.drawRect(0, 0, 100, 100);
graphics.endFill();
graphics.tint = 0x0000ff; // синий оттенок
app.stage.addChild(graphics);
С помощью tint можно реализовать анимации и
интерактивные эффекты, изменяя цвет в цикле:
let color = 0xff0000;
app.ticker.add(() => {
color += 0x000101;
sprite.tint = color;
});
Эта техника позволяет создавать плавные переходы цвета, мигания и эффект подсветки.
tint — быстрый способ изменить цвет спрайтов без
изменения текстуры.DisplayObject с цветовой
фильтрацией.Использование tint позволяет создавать визуально богатые
приложения с минимальными затратами ресурсов и без необходимости хранить
несколько версий текстур.