# 类 AudioPlayer 渲染进程类,游戏进程不能直接使用,继承自 [`EventEmitter`](./event-emitter.md) - 实例成员 - [`index`](#index) - [`data`](#data) - [`buffer`](#buffer) - [`source`](#source) - [`baseNode`](#basenode) - 实例方法 - 构造器[`constructor`](#constructor) - [`update`](#update) - [`getSource`](#getSource) - [`play`](#play) - [`ready`](#ready) - [`getDestination`](#getdestination) - 静态成员 - [`ac`](#ac) - [`index`](#static-index) ## index ```ts declare var index: number ``` ## data ```ts declare var data: ArrayBuffer ``` ## buffer ```ts declare var buffer: AudioBuffer | null ``` ## source ```ts declare var source: AudioBufferSourceNode | undefined ``` ## baseNode ```ts declare var baseNode: BaseNode[] ``` - 成员说明 包含了音频在播放时经过的每个音频处理路由的根节点,参考[自定义音频路由](../../guide/audio.md#自定义音频路由) - 接口 `BaseNode` ```ts interface BaseNode { node: AudioNode; channel?: number; } ``` - `node`: 路由节点 - `channel`: 连接至的音频入口(input channel) ## constructor() ```ts interface AudioPlayer { new(data: ArrayBuffer): AudioPlayer } ``` - 参数说明 - `data`: 音频的 `ArrayBuffer` 数据,一般是 xhr 请求的 response ## update() ```ts declare function update(data: ArrayBuffer): Promise ``` - 方法说明 更新音频的 `ArrayBuffer` 数据,并解析为 `AudioBuffer`,赋值给 [`buffer`](#buffer) 属性 ## getSource() ```ts declare function getSource(): AudioBufferSourceNode ``` - 方法说明 获取音频的源节点 ## play() ```ts declare function play(when?: number, offset?: number, duration?: number): void ``` - 参数说明 - `when`: 声音开始播放的时间,注意不是声音从哪开始播放。时间与 [`ac`](#ac) 共用一个时间轴,即在 `ac` 的何时播放这个音频,如果小于 `ac` 的 `currentTime`,那么会立刻开始播放,单位是秒 - `offset`: 从声音的何时开始播放,例如填 5 就是从声音的第 5 秒开始播放 - `duration`: 指定声音播放多长时间,单位为秒 ## ready() ```ts declare function ready(): void ``` - 方法说明 准备音频路由,将源节点连接至各个音频路由根节点 ## getDestination() ```ts declare function getDestination(): AudioDestinationNode ``` - 方法说明 获取音频目的地节点 ## ac ```ts declare var ac: AudioContext ``` - 静态成员说明 音频处理上下文实例,所有的音频处理(bgm 除外)都是用它来实现的 ## static index ```ts declare var index: number ``` ## play 事件 ```ts interface AudioPlayerEvent { play: (node: AudioBufferSourceNode) => void } ``` ## update 事件 ```ts interface AudioPlayerEvent { update: (audio: AudioBuffer) => void } ``` ## end 事件 ```ts interface AudioPlayerEvent { end: (node: AudioBufferSourceNode) => void } ```