Audio - Verge3D 用户手册 - Soft8Soft
Description: 了解如何在使用 Verge3D 制作的交互式 3D 应用程序中使用 Audio

Object3D →

# Audio

创建一个（ 全局) audio对象.
使用 Web Audio API.

## 代码示例

`// create an AudioListener and add it to the camera const listener = new v3d.AudioListener(); camera.add(listener); // create a global audio source const sound = new v3d.Audio(listener); // load a sound and set it as the Audio object's buffer const audioLoader = new v3d.AudioLoader(); audioLoader.load('sounds/ambient.ogg', function(buffer) { sound.setBuffer(buffer); sound.setLoop(true); sound.setVolume(0.5); sound.play(); });`

## 构造函数

### Audio(listener : AudioListener)

listener — (必须) AudioListener 的实例.

## 属性

### # .autoplay : Boolean

是否自动开始播放. 默认为 false.

### # .context : AudioContext

构造函数中传入listener的AudioContext.

### # .detune : Number

修改音高，以音分为单位。 +/- 100为一个半音， +/- 1200为一个八度。默认值为0。

### # .filters : Array

表示BiquadFilterNodes的数组. 可以使用多种不同的低阶filters去创建复杂的音效. filters可以通过 Audio.setFilter 或者 Audio.setFilters设置.

### # .gain : GainNode

使用AudioContext.createGain()创建的GainNode.

### # .hasPlaybackControl : Boolean

是否可以使用 play(), pause()等方法控制播放. 默认为 true.

### # .isPlaying : Boolean

是否正在播放

### # .listener : AudioListener

A reference to the listener object of this audio.

### # .playbackRate : Number

播放速率. 默认为 1.

### # .offset : Number

音频开始播放的偏移时间. 和AudioBufferSourceNode.start()的offset参数一样. 默认为 0.

### # .duration : Number

覆盖音频的持续时间。与AudioBufferSourceNode.start()中的duration属性相同。默认为undefined，以用于播放整个buffer。

### # .source : String

使用 AudioContext.createBufferSource()创建的AudioBufferSourceNode.

### # .sourceType : String

音源的类型. 默认为 'empty'.

### # .type : String

表示类型的字符串, 设置为'Audio'.

## 方法

### # .connect() → Audio

连接Audio.source. 在初始化和设置/删除filters时使用.

### # .disconnect() → Audio

断开连接Audio.source. 在设置/删除filters时使用.

### # .getFilter() → BiquadFilterNode

返回 filters 数组的第一个元素.

### # .getFilters() → Array

返回filters 数组.

### # .getLoop() → Boolean

返回source.loop (是否循环播放)的值.

### # .getOutput() → GainNode

返回gainNode.

### # .getPlaybackRate() → Float

返回playbackRate的值.

### # .getVolume(value) → Float

返回音量.

### # .play(delay) → Audio

如果hasPlaybackControl是true, 开始播放.

### # .pause() → Audio

如果hasPlaybackControl是true, 暂停播放.

### # .onEnded() → null

播放完成后自动调用.

### # .setBuffer(audioBuffer) → Audio

设置source给audioBuffer, 和设置sourceType给'buffer'.
如果autoplay为true, 也开始播放.

### # .setFilter(filter) → Audio

设置一个BiquadFilterNode给Audio.

### # .setFilters(value : Array) → Audio

value--filters数组.
应用BiquadFilterNodes数组给Audio.

### # .setLoop(value : Boolean) → Audio

设置source.loop的值 (是否循环播放).

### # .setLoopStart(value : Float) → Audio

设置source.loopStart的值

### # .setLoopEnd(value : Float) → Audio

设置source.loopEnd的值

### # .setMediaElementSource(mediaElement) → Audio

应用传入的HTMLMediaElement类型对象作为音源。
并且设置hasPlaybackControl为false。

### # .setMediaStreamSource(mediaStream) → Audio

应用传入的MediaStream类型对象作为音源。
并且设置hasPlaybackControl为false。

### # .setNodeSource(audioNode) → Audio

设置source给audioBuffer, 和设置sourceType给 'audioNode'.
并且设置hasPlaybackControl为false.

### # .setPlaybackRate(value : Float) → Audio

如果hasPlaybackControl是true, 设置playbackRate（播放速率） 的值.

### # .setVolume(value : Float) → Audio

设置音量.

### # .stop() → Audio

如果hasPlaybackControl是true, 停止播放.

## 源码

src/audio/Audio.js