Skip to content

# 类 AudioPlayer ​

渲染进程类，游戏进程不能直接使用，继承自 `EventEmitter`

- 实例成员
  - `index`
  - `data`
  - `buffer`
  - `source`
  - `baseNode`
- 实例方法
  - 构造器`constructor`
  - `update`
  - `getSource`
  - `play`
  - `ready`
  - `getDestination`
- 静态成员
  - `ac`
  - `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[]

- 成员说明

  包含了音频在播放时经过的每个音频处理路由的根节点，参考自定义音频路由

- 接口 `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<void>

- 方法说明

  更新音频的 `ArrayBuffer` 数据，并解析为 `AudioBuffer`，赋值给 `buffer` 属性

## getSource() ​

ts

    declare function getSource(): AudioBufferSourceNode

- 方法说明

  获取音频的源节点

## play() ​

ts

    declare function play(when?: number, offset?: number, duration?: number): void

- 参数说明

  - `when`: 声音开始播放的时间，注意不是声音从哪开始播放。时间与 `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
    }