import type { Disposable, LostHandler, RestoreHandler, SceneLoadOptions, Scene, AssetManager, Composition, Renderer, Ticker } from '@galacean/effects-core'; import { Engine, EventEmitter } from '@galacean/effects-core'; import type { PlayerConfig, PlayerEvent } from './types'; /** * Galacean Effects 播放器 */ export declare class Player extends EventEmitter> implements Disposable, LostHandler, RestoreHandler { readonly env: string; /** * 播放器的 canvas 对象 */ readonly canvas: HTMLCanvasElement; /** * 播放器的唯一标识 */ readonly name: string; /** * 播放器的容器元素 */ readonly container: HTMLElement | null; /** * 播放器使用的引擎 */ readonly engine: Engine; private readonly onError?; private autoPlaying; private resumePending; private disposed; /** * 是否跳过指针移动时的拾取检测, 开启后可以减少移动时的性能消耗,但会导致 pointermove 事件无法触发 */ get skipPointerMovePicking(): boolean; set skipPointerMovePicking(value: boolean); /** * 计时器 * 手动渲染 `manualRender=true` 时不创建计时器 */ get ticker(): Ticker | null; /** * 播放器的渲染器对象 */ get renderer(): Renderer; get gpuCapability(): import("@galacean/effects-core").GPUCapability; /** * 当前播放的合成对象数组,请不要修改内容 */ private get compositions(); private get assetManagers(); private get assetService(); private get event(); private get displayAspect(); private set displayAspect(value); private get displayScale(); private set displayScale(value); private get offscreenMode(); private set offscreenMode(value); /** * 播放器的像素比 */ private get pixelRatio(); private set pixelRatio(value); /** * 播放器的构造函数 * @param config */ constructor(config: PlayerConfig); /** * 设置当前 Player 的播放速度 * @param speed - 播放速度 */ setSpeed(speed: number): void; /** * 获取当前 Player 的播放速度 * @returns */ getSpeed(): number; /** * 根据名称查找对应的合成(可能找不到,如果有同名的合成,默认返回第一个) * @example * ``` ts * const composition = player.getCompositionByName('新建合成1'); * ``` * @param name - 目标合成名称 */ getCompositionByName(name: string): Composition | undefined; /** * 获取当前播放的所有合成(请不要修改返回的数组内容) */ getCompositions(): Composition[]; /** * Gets the array of asset managers. * @returns */ getAssetManager(): ReadonlyArray; /** * 获取当前播放的合成数量 */ get compositionCount(): number; /** * 是否有合成在播放 */ get hasPlayable(): boolean; /** * 播放器是否已暂停 */ get paused(): boolean | undefined; /** * 获取播放器是否可交互 */ get interactive(): boolean; /** * 设置播放器是否可交互 */ set interactive(enable: boolean); /** * 加载动画资源 * @example * ``` ts * // 1. 加载单个合成链接并设置可选参数 * const composition = await player.loadScene('xxx.json', { ... }); * const composition = await player.loadScene({ url: 'xxx.json' }, { ... }); * * // 2. 加载单个合成的 JSON 对象并设置可选参数 * const composition = await player.loadScene(JSONValue, { ... }); * * // 3. 加载多个合成链接或 JSON 对象 * const [_, _, _] = await player.loadScene(['x1.json', 'x2.json', JSONValue]); * * // 4. 加载多个合成链接并各自设置可选参数 * const [_, _] = await player.loadScene([{ * url: 'x1.json', * options: { autoplay: false, ... }, * }, { * url: 'x2.json', * options: { speed: 2, ... }, * }, { ... }]); * * // 5. 加载多个合成链接并统一设置可选参数(共用) * const [_, _, _] = await player.loadScene(['x1.json', 'x2.json', ...], { ... }); * const [_, _] = await player.loadScene( * [{ url: 'x1.json' }, { url: 'x2.json' }, { ... }], * { * variables: { * 'name': 'value', * }, * speed: 2, * ... * }, * ); * * // 6. 疯狂混合 * await player.loadScene([ * { * url: 'x1.json', * options: { * variables: { * 'name1': 'value1', * }, * speed: 2, * }, * }, * 'x2.json', * JSONValue, * ], { * variables: { * 'name2': 'value2', * }, * speed: 0.1, * }); * ``` * @param scene - 一个或一组 URL 或者通过 URL 请求的 JSONObject 或者 Scene 对象 * @param options - 加载可选参数 * @returns */ loadScene(scene: Scene.LoadType, options?: SceneLoadOptions): Promise; loadScene(scene: Scene.LoadType[], options?: SceneLoadOptions): Promise; /** * 播放通过 player 加载好的全部合成 */ play(): void; /** * 跳转全部合成到指定时间后播放 * @param time - 指定时间, 单位秒 */ gotoAndPlay(time: number): void; /** * 跳转全部合成到指定时间并停留 * @param time - 指定时间, 单位秒 */ gotoAndStop(time: number): void; /** * 顺序播放一组还未开始播放的合成 * @param compositions - 要播放的合成数组 */ playSequence(compositions: Composition[]): void; /** * 暂停播放器 * @param options * @param options.offloadTexture - 是否卸载贴图纹理,减少内存 * @returns */ pause(options?: { offloadTexture?: boolean; }): void; /** * 恢复播放器 * > 如果暂停时卸载了纹理贴图,此函数将自动请求网络重新加载纹理 * @returns */ resume(): Promise; /** * player 在定时器每帧的回调 * @param dt - 时间差,毫秒 */ tick(dt: number): void; /** * 调整画布的宽高比 * @param aspect * @param scale */ resizeToAspect(aspect: number, scale?: number): void; /** * 将播放器重新和父容器大小对齐 */ resize(): void; /** * 清空 canvas 的画面 */ clearCanvas(): void; /** * 播放器在 `webglcontextlost` 时执行的操作 * @param e - Event */ lost: (e: Event) => void; /** * 播放器在 `webglcontextrestored` 时执行的操作 * @returns */ restore: () => Promise; /** * 销毁当前播放的所有 Composition */ destroyCurrentCompositions(): void; /** * 销毁播放器 */ dispose(): void; private offloadTexture; private handleThrowError; private handleEmitEvent; } /** * 禁止/允许创建新的播放器,已创建的不受影响 * @param disable - 是否禁止 */ export declare function disableAllPlayer(disable: boolean): void;