text-particle
Version:
Particle effects for text.
75 lines (74 loc) • 2.28 kB
TypeScript
import { FilterRGBA, Particle } from "./particle";
import { Renderer } from "./renderer/renderer";
export interface ParticleConfig {
source: string;
offsetX: number;
offsetY: number;
/**
* Control Particle Radius
*/
particleRadius: number;
/**
* Control the sparsity of the particle distribution
*/
particleGap: number;
/**
* Move 1/n of remaining distance per frame.
*
* Make 'enableContinuousEasing' true to take this option effect.
*
* Default is 30.
*/
moveProportionPerFrame: number;
/**
* Make 'enableContinuousEasing' true to take this option effect
*/
showMouseCircle: boolean;
enableContinuousEasing: boolean;
enableWebGL: boolean;
/**
* Control Particle Radius
*
* Tip: Setting a color will improve particle performance
*/
color?: string;
/**
* Default is false.
*/
disableCache?: boolean;
pixelFilter?: FilterRGBA;
}
export interface ParticleCache {
config: ParticleConfig;
particles: Particle[];
}
export type ParticleEffectRoot = HTMLElement | HTMLCanvasElement;
export declare abstract class ParticleEffect {
root: ParticleEffectRoot;
protected renderer: Renderer;
protected canvas: HTMLCanvasElement;
protected isRendering: boolean;
protected cacheMap: Map<string, ParticleCache>;
protected unBindMouseEventCallback: (() => void) | null;
protected lastAnimationBeginTime: number;
protected animationTime: number;
protected particles: Particle[];
protected mouseParticle: Particle | null;
protected _config: ParticleConfig;
protected constructor(root: ParticleEffectRoot, config: Partial<ParticleConfig>);
destroy(): void;
/**
*
* @param newSource
* @param time this option will be disabled if 'enableContinuousEasing' is set to true
* @returns
*/
transitionTo(newSource: string, time: number, config?: Partial<ParticleConfig>): Promise<void>;
resize(): void;
render(source?: string): Promise<void>;
protected generateParticles(source: string): Promise<Particle[]>;
private enableMouseListener;
private disableMouseListener;
private updateParticleEase;
private updateParticleContinuous;
}