The Color class provides a unified way to work with colors in PixiJS. It supports multiple color formats and offers powerful color manipulation features while maintaining high performance.
PixiJS supports a wide range of color formats through the ColorSource type:
import { Color } from 'pixi.js';
// CSS Color Names
const red = new Color('red');
const blue = new Color('blue');
// Hexadecimal (Hex)
const hexNumber = new Color(0xff0000);     // RGB integer
const hexString = new Color('#ff0000');    // 6-digit hex
const shortHex = new Color('#f00');        // 3-digit hex
const hexAlpha = new Color('#ff0000ff');   // 8-digit hex (with alpha)
const shortHexAlpha = new Color('#f00f');  // 4-digit hex (with alpha)
// RGB/RGBA Values
const rgb = new Color({ r: 255, g: 0, b: 0 });
const rgba = new Color({ r: 255, g: 0, b: 0, a: 0.5 });
const rgbString = new Color('rgb(255, 0, 0)');
const rgbaString = new Color('rgba(255, 0, 0, 0.5)');
// Arrays (normalized 0-1)
const rgbArray = new Color([1, 0, 0]);           // RGB
const rgbaArray = new Color([1, 0, 0, 0.5]);     // RGBA
const float32Array = new Color(new Float32Array([1, 0, 0, 0.5]));
// HSL/HSLA Values
const hsl = new Color({ h: 0, s: 100, l: 50 });
const hsla = new Color({ h: 0, s: 100, l: 50, a: 0.5 });
const hslString = new Color('hsl(0, 100%, 50%)');
Colors can be used throughout the PixiJS API for properties like tint, fill, and stroke:
import { Sprite, Graphics, Text, TextStyle } from 'pixi.js';
// Sprite tinting
const sprite = Sprite.from('image.png');
sprite.tint = 'red';                    // CSS color name
sprite.tint = 0xff0000;                 // Hex number
sprite.tint = '#ff0000';                // Hex string
sprite.tint = new Color('red');         // Color instance
// Graphics fills and strokes
const graphics = new Graphics();
graphics.fill({ color: 'red' });        // CSS color name
graphics.fill({ color: 0xff0000 });     // Hex number
graphics.stroke({ color: '#ff0000' });  // Hex string
graphics.stroke({ color: new Color('red') }); // Color instance
// Text styles
import { Text, TextStyle } from 'pixi.js';
const style = new TextStyle({
    fill: 'red',                          // CSS color name
    // or
    fill: 0xff0000,                       // Hex number
    // or
    fill: 'rgb(255, 0, 0)',             // RGB string
});
const text = new Text('Hello, PixiJS!', style);
Access and modify individual color components:
const color = new Color('red');
// Get components (normalized 0-1)
console.log(color.red);   // 1
console.log(color.green); // 0
console.log(color.blue);  // 0
console.log(color.alpha); // 1
// Set alpha (transparency)
color.setAlpha(0.5);     // 50% transparent
Convert between different color formats:
const color = new Color('red');
// Different output formats
color.toNumber();     // 0xff0000
color.toHex();        // "#ff0000"
color.toHexa();       // "#ff0000ff"
color.toRgbString();  // "rgb(255,0,0)"
color.toRgbaString(); // "rgba(255,0,0,1)"
// Object representations
color.toRgb();        // { r: 1, g: 0, b: 0 }
color.toRgba();       // { r: 1, g: 0, b: 0, a: 1 }
// Array formats
color.toArray();      // [1, 0, 0, 1]
color.toRgbArray();   // [1, 0, 0]
The Color class provides methods for color manipulation:
const color = new Color('red');
// Multiply colors
color.multiply([0.5, 0.5, 0.5]);    // 50% darker
color.multiply(new Color('#808080')); // Same effect
// Premultiply alpha
color.premultiply(0.5);              // 50% transparent with RGB adjustment
color.premultiply(0.5, false);       // 50% transparent, original RGB
// Chain operations
color
    .setValue('#ff0000')
    .setAlpha(0.8)
    .multiply([0.5, 0.5, 0.5])
    .premultiply(0.5);
Use static methods and properties for common operations:
// Shared instance for temporary operations
Color.shared.setValue('red').toHex();  // "#ff0000"
// Check valid color values
Color.isColorLike('red');          // true
Color.isColorLike('#ff0000');      // true
Color.isColorLike([1, 0, 0]);      // true
Color.isColorLike({ r: 1, g: 0, b: 0 }); // true
Color class for consistent color handlingColor.shared) for temporary operationsFor more specific implementation details and advanced usage, refer to the API documentation of individual classes and interfaces.