@smoovy/tween
Version:
simple and easy-to-use tween lib
69 lines (68 loc) • 2.52 kB
TypeScript
import { Ticker } from '@smoovy/ticker';
export interface TweenControllerConfig {
duration?: number;
delay?: number;
reversed?: boolean;
autoStart?: boolean;
reverseDelay?: boolean;
initSeek?: boolean;
easing?: (x: number) => number;
onSeek?: (ms: number, progress: number) => void;
onDelay?: (ms: number, progress: number) => void;
onPause?: () => void;
onResume?: () => void;
onStop?: (wasTicking: boolean) => void;
onComplete?: () => void;
onReset?: () => void;
onStart?: () => void;
}
export declare function mapRange(value: number, inStart: number, inEnd: number, outMin: number, outMax: number): number;
export declare class TweenController<T extends TweenControllerConfig = TweenControllerConfig> {
protected config: T;
protected ticker: Ticker;
protected _overridden: boolean;
protected _duration: number;
protected listeners: Map<string, any>;
protected _resolved: boolean;
protected _paused: boolean;
protected _passed: number;
protected _progress: number;
protected _reversed: boolean;
protected _started: boolean;
protected lastProgress: number;
protected lastDelay: number;
private task?;
private resolveFn?;
constructor(config?: T);
protected callback(fn?: any, values?: any[]): void;
protected beforeStart(): void;
protected beforeStop(): void;
protected beforeSeek(): void;
onStart(cb: () => void): this;
onComplete(cb: () => void): this;
onStop(cb: (wasTicking: boolean) => void): this;
protected callListeners(name: string, args?: any[]): void;
private setListener;
get progress(): number;
get delay(): number;
get duration(): number;
get paused(): boolean;
get complete(): boolean;
get passed(): number;
get reversed(): boolean;
get ticking(): boolean;
protected resolve(): void;
override(overridden?: boolean): this;
start(startFrom?: number, noReset?: boolean): this;
resume(): this;
pause(paused?: boolean): this;
stop(noEvents?: boolean): this;
hasStarted(ms: number): boolean;
seekDelay(ms: number, noDelay?: boolean, noEvents?: boolean): boolean;
preSeek(ms: number, noEvents?: boolean): boolean;
seek(ms: number, noDelay?: boolean, noEvents?: boolean): this;
reset(seek?: number, noEvents?: boolean): this;
reverse(): this;
then(onFulfilled: (controller: Omit<this, 'then'>) => void): Promise<this>;
process(eased: number, linear: number): this;
}