import { utils } from "pixi.js"; import { DOnOptions } from "./d-on-options"; /** * A function called when an animation starts. * * @param isReverse true if an animation is playing in reverse * @param animation an instance */ export type DAnimationOnStart = (isReverse: boolean, animation: DAnimation) => void; /** * A function called constantly when an animation is on a run. * * @param time a timing value in a range [0, 1] * @param isReverse true if an animation is playing in reverse * @param elapsedTime an elapsed time since an animation has started * @param animation an instance */ export type DAnimationOnTime = (time: number, isReverse: boolean, elapsedTime: number, animation: DAnimation) => void; /** * Triggered when an animation ends. * * @param isReverse true if an animation is playing in reverse * @param animation an instance */ export type DAnimationOnEnd = (isReverse: boolean, animation: DAnimation) => void; /** * Triggered when an animation stops. * * @param isReverse true if an animation is playing in reverse * @param animation an instance */ export type DAnimationOnStop = (isReverse: boolean, animation: DAnimation) => void; /** * An easing function. * * @param time a normalized elapsed time * @param animation an instance */ export type DAnimationTiming = (time: number, animation: DAnimation) => number; /** * {@link DAnimation} events. */ export interface DAnimationEvents { /** * Triggered when an animation starts. * * @param isReverse true if an animation is playing in reverse * @param emitter an emitter */ start(isReverse: boolean, emitter: EMITTER): void; /** * Triggered constantly when an animation is on a run. * * @param time a timing value in a range [0, 1] * @param isReverse true if an animation is playing in reverse * @param elapsedTime an elapsed time since an animation has started * @param emitter an emitter */ time(time: number, isReverse: boolean, elapsedTime: number, emitter: EMITTER): void; /** * Triggered when an animation ends. * * @param isReverse true if an animation is playing in reverse * @param emitter an emitter */ end(isReverse: boolean, emitter: EMITTER): void; /** * Triggered when an animation stops. * * @param isReverse true if an animation is playing in reverse * @param emitter an emitter */ stop(isReverse: boolean, emitter: EMITTER): void; } /** * {@link DAnimation} "on" options. */ export interface DAnimationOnOptions extends Partial>, DOnOptions { } /** * {@link DAnimation} options. */ export interface DAnimationOptions> { /** * An animation target. */ target?: TARGET | null; /** * A function called when an animation starts. */ onStart?: DAnimationOnStart; /** * A function called constantly when an animation is on a run. */ onTime?: DAnimationOnTime; /** * Triggered when an animation ends. */ onEnd?: DAnimationOnEnd; /** * Triggered when an animation stops. */ onStop?: DAnimationOnStop; timing?: DAnimationTiming; /** * An animation duration. */ duration?: number; /** * Event handlers. */ on?: DAnimationOnOptions; } export interface DAnimation extends utils.EventEmitter { /** * An animation target. */ target: TARGET | null; /** * An animation duration. */ duration: number; /** * Starts an animation. * * @param reverse true to play in reverse. */ start(reverse?: boolean): void; /** * Returns true if an animation is playing. */ isStarted(): boolean; /** * Returns true if an animation is in a reverse mode. */ isReverse(): boolean; /** * Stops an animation as is. */ stop(): void; /** * Moves an animation frame to the end. */ end(): void; on>(event: E, handler: DAnimationEvents[E], context?: any): this; on(event: string, handler: (...args: any[]) => any, context?: any): this; once>(event: E, handler: DAnimationEvents[E], context?: any): this; once(event: string, handler: (...args: any[]) => any, context?: any): this; emit>(event: E, ...args: Parameters[E]>): boolean; emit(event: string, ...args: any): boolean; }