three.js Audio

2023-02-16 17:28 更新

创建一个( 全局 ) audio对象.

使用 Web Audio API.

代码示例

// 创建一个 AudioListener 并将其添加到 camera 中
const listener = new THREE.AudioListener();
camera.add( listener );

// 创建一个全局 audio 源
const sound = new THREE.Audio( listener );

// 加载一个 sound 并将其设置为 Audio 对象的缓冲区
const audioLoader = new THREE.AudioLoader();
audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {
	sound.setBuffer( buffer );
	sound.setLoop( true );
	sound.setVolume( 0.5 );
	sound.play();
});

例子

webaudio / sandbox

webaudio / visualizer

构造函数

Audio( listener : AudioListener )

listener — (必须) AudioListener 的实例.

属性

.autoplay : Boolean

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

.context : AudioContext

构造函数中传入listener的AudioContext.

.detune : Number

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

.filters : Array

表示是一个 AudioNodes 数组。可用于应用各种低阶滤波器来创建更复杂的声音效果。在大多数情况下,该数组包含 BiquadFilterNodes 的实例。通过 Audio.setFilter 或 Audio.setFilters 设置 filter。

.gain : GainNode

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

.hasPlaybackControl : Boolean

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

.isPlaying : Boolean

是否正在播放

.listener : AudioListener

该 audio listener 对象的一个引用

.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 () : this

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

.disconnect () : this

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

.getFilter () : BiquadFilterNode

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

.getFilters () : Array

返回filters 数组.

.getLoop () : Boolean

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

.getOutput () : GainNode

返回gainNode.

.getPlaybackRate () : Float

返回playbackRate的值.

.getVolume ( value ) : Float

返回音量.

.play ( delay ) : this

如果hasPlaybackControl是true, 开始播放.

.pause () : this

如果hasPlaybackControl是true, 暂停播放.

.onEnded () : undefined

播放完成后自动调用.

.setBuffer ( audioBuffer ) : this

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

.setFilter ( filter ) : this

将单个 filter 节点应用在该 audio 上。

.setFilters ( value : Array ) : this

value - filter 数组。将一组 filter 节点应用在该 audio 上。

.setLoop ( value : Boolean ) : this

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

.setLoopStart ( value : Float ) : this

设置source.loopStart的值

.setLoopEnd ( value : Float ) : this

设置source.loopEnd的值

.setMediaElementSource ( mediaElement ) : this

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

.setMediaStreamSource ( mediaStream ) : this

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

.setNodeSource ( audioNode ) : this

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

.setPlaybackRate ( value : Float ) : this

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

.setVolume ( value : Float ) : this

设置音量.

.stop () : this

如果hasPlaybackControl是true, 停止播放.

源码

src/audio/Audio.js


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号