import { Component } from '@eva/eva.js'; import { ComponentChanged } from '@eva/eva.js'; import { ContainerManager } from '@eva/plugin-renderer'; import { GameObject } from '@eva/eva.js'; import { Renderer } from '@eva/plugin-renderer'; import { RendererManager } from '@eva/plugin-renderer'; import { RendererSystem } from '@eva/plugin-renderer'; import { SpriteAnimation as SpriteAnimation_2 } from '@eva/renderer-adapter'; /** * 精灵动画组件 * * SpriteAnimation 组件用于播放帧动画(序列帧动画)。 * 通过快速切换精灵图集中的不同帧,实现动画效果, * 适用于角色动作、特效、UI 动画等场景。 * * 主要功能: * - 支持自动播放和手动控制 * - 可配置播放速度和循环次数 * - 支持跳转到指定帧 * - 提供播放完成事件 * - 支持 forwards 模式(停在最后一帧) * * @example * ```typescript * // 基础用法 - 自动播放 * const character = new GameObject('character'); * character.addComponent(new SpriteAnimation({ * resource: 'walkAnimation', // 帧动画资源 * autoPlay: true, * speed: 100 // 播放速度(毫秒/帧) * })); * * // 控制播放 * const anim = character.getComponent('SpriteAnimation'); * anim.play(3); // 播放 3 次 * anim.play(Infinity); // 无限循环 * anim.stop(); // 停止播放 * anim.gotoAndPlay(10); // 跳到第 10 帧并播放 * anim.gotoAndStop(0); // 跳到第 0 帧并停止 * * // 监听播放完成 * anim.on('complete', () => { * console.log('动画播放完成'); * }); * ``` */ export declare class SpriteAnimation extends Component { /** 组件名称 */ static componentName: string; /** 帧动画资源名称 */ resource: string; /** 是否自动播放 */ autoPlay: boolean; /** 播放速度(毫秒/帧) */ speed: number; /** 是否在最后一帧停止(forwards 模式) */ forwards: boolean; /** 动画引擎实例 */ _animate: SpriteAnimation_2; /** 等待播放标志(资源加载前调用 play) */ private waitPlay; /** 等待停止标志 */ private waitStop; /** 播放次数 */ private times; /** 当前已播放次数 */ private count; /** 是否播放完成 */ private complete; /** * 初始化组件 * @param obj - 初始化参数 * @param obj.resource - 帧动画资源名称 * @param obj.autoPlay - 是否自动播放 * @param obj.speed - 播放速度 * @param obj.forwards - 是否停在最后一帧 */ init(obj?: SpriteAnimationParams): void; play(times?: number): void; stop(): void; set animate(val: SpriteAnimation_2); get animate(): SpriteAnimation_2; gotoAndPlay(frameNumber: any): void; gotoAndStop(frameNumber: any): void; get currentFrame(): number; get totalFrames(): number; } export declare interface SpriteAnimationParams { resource: string; autoPlay?: boolean; speed?: number; /** Stop at last frame */ forwards?: boolean; } export declare class SpriteAnimationSystem extends Renderer { static systemName: string; name: string; animates: { [propName: number]: SpriteAnimation_2; }; autoPlay: { [propName: number]: boolean; }; renderSystem: RendererSystem; rendererManager: RendererManager; containerManager: ContainerManager; init(): void; rendererUpdate(gameObject: GameObject): void; componentChanged(changed: ComponentChanged): Promise; add({ frames, id, component }: { frames: any; id: any; component: any; }): void; change({ frames, id, component }: { frames: any; id: any; component: any; }): void; remove(id: any, isChange?: boolean): void; } export { }