TriangleLoader10 / 21

Анимированный загрузчик

Подключим треугольник к существующему ticker.

Результат

Загрузка Canvas…
Управление примером
64
96

Подготовка примера…

Загрузчик получает два отдельных Graphics: контуры треугольника и частицы. Он сам очищает их при отрисовке. Время берём из существующего ticker приложения.

import { Graphics } from 'pixi.js';
import type { Ticker } from 'pixi.js';
import { CyberPreset, TriangleLoader } from '@gamedevland/cyber-ui';

const emblem = app.stage.addChild(new Graphics());
const dust = app.stage.addChild(new Graphics());
const loader = new TriangleLoader(CyberPreset.triangle);
const tick = (ticker: Ticker) => {
  loader.update(ticker.deltaMS / 1000);
  loader.draw(emblem, dust,
    { x: app.screen.width / 2, y: 120, radius: 64, scale: 1 },
    CyberPreset.trianglePalette);
};
app.ticker.add(tick);

Деление на 1000 переводит миллисекунды в секунды. ticker.deltaTime — другой показатель, передавать его как секунды нельзя. Изменение размеров в draw() не сбрасывает анимацию.

При удалении экрана сначала убираем callback и освобождаем эффект:

app.ticker.remove(tick);
loader.dispose();

После этого можно уничтожать emblem и dust. Тулкит не уничтожает переданные ему поверхности.

Настройки TriangleOptions
ПолеНазначение
cycleMs, spinDelayMs, spinDurationMsПериод движения, пауза до вращения, длительность вращения в мс
layers, layerGap, layerLiftЧисло контуров (1–32), промежуток, подъём
strokeWidth, haloWidthТолщина линии и ореола
haloAlpha, echoAlphaПрозрачность ореола и копии [0, 1]
particles, particleSize, particleSpread, particleAlphaКоличество (0–1024), размер, разброс, прозрачность [0, 1]
seedЦелое число 0–4294967295 для повторяемой геометрии

TriangleLayout содержит x, y, положительные radius и scale. TrianglePalette содержит accent, secondary, highlight, text. Настройки получаем копированием CyberPreset.triangle и CyberPreset.trianglePalette. outerRadius(radius) вычисляет свободное место для наружных слоёв до применения масштаба.

Источники ↗

Cyber UI Toolkit · TriangleLoader↗Настройки загрузчика и borrowed Graphics.PixiJS · Ticker↗Подписка и deltaMS.