three.js Audio

2023-02-16 17:28 更新

創(chuàng)建一個(gè)( 全局 ) audio對(duì)象.

使用 Web Audio API.

代碼示例

// 創(chuàng)建一個(gè) AudioListener 并將其添加到 camera 中
const listener = new THREE.AudioListener();
camera.add( listener );

// 創(chuàng)建一個(gè)全局 audio 源
const sound = new THREE.Audio( listener );

// 加載一個(gè) sound 并將其設(shè)置為 Audio 對(duì)象的緩沖區(qū)
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

構(gòu)造函數(shù)

Audio( listener : AudioListener )

listener — (必須) AudioListener 的實(shí)例.

屬性

.autoplay : Boolean

是否自動(dòng)開始播放. 默認(rèn)為 false.

.context : AudioContext

構(gòu)造函數(shù)中傳入listener的AudioContext.

.detune : Number

修改音高,以音分為單位。 +/- 100為一個(gè)半音, +/- 1200為一個(gè)八度。默認(rèn)值為0。

.filters : Array

表示是一個(gè) AudioNodes 數(shù)組??捎糜趹?yīng)用各種低階濾波器來(lái)創(chuàng)建更復(fù)雜的聲音效果。在大多數(shù)情況下,該數(shù)組包含 BiquadFilterNodes 的實(shí)例。通過(guò) Audio.setFilter 或 Audio.setFilters 設(shè)置 filter。

.gain : GainNode

使用AudioContext.createGain()創(chuàng)建的GainNode.

.hasPlaybackControl : Boolean

是否可以使用 play(), pause()等方法控制播放. 默認(rèn)為 true.

.isPlaying : Boolean

是否正在播放

.listener : AudioListener

該 audio listener 對(duì)象的一個(gè)引用

.playbackRate : Number

播放速率. 默認(rèn)為 1.

.offset : Number

音頻開始播放的偏移時(shí)間. 和AudioBufferSourceNode.start()的offset參數(shù)一樣. 默認(rèn)為 0.

.duration : Number

覆蓋音頻的持續(xù)時(shí)間。與AudioBufferSourceNode.start()中的duration屬性相同。默認(rèn)為undefined,以用于播放整個(gè)buffer。

.source : String

使用 AudioContext.createBufferSource()創(chuàng)建的AudioBufferSourceNode.

.sourceType : String

音源的類型. 默認(rèn)為 'empty'.

.type : String

表示類型的字符串, 設(shè)置為'Audio'.

方法

.connect () : this

連接Audio.source. 在初始化和設(shè)置/刪除filters時(shí)使用.

.disconnect () : this

斷開連接Audio.source. 在設(shè)置/刪除filters時(shí)使用.

.getFilter () : BiquadFilterNode

返回 filters 數(shù)組的第一個(gè)元素.

.getFilters () : Array

返回filters 數(shù)組.

.getLoop () : Boolean

返回source.loop (是否循環(huán)播放)的值.

.getOutput () : GainNode

返回gainNode.

.getPlaybackRate () : Float

返回playbackRate的值.

.getVolume ( value ) : Float

返回音量.

.play ( delay ) : this

如果hasPlaybackControl是true, 開始播放.

.pause () : this

如果hasPlaybackControl是true, 暫停播放.

.onEnded () : undefined

播放完成后自動(dòng)調(diào)用.

.setBuffer ( audioBuffer ) : this

設(shè)置source給audioBuffer, 和設(shè)置sourceType給'buffer'.如果autoplay為true, 也開始播放.

.setFilter ( filter ) : this

將單個(gè) filter 節(jié)點(diǎn)應(yīng)用在該 audio 上。

.setFilters ( value : Array ) : this

value - filter 數(shù)組。將一組 filter 節(jié)點(diǎn)應(yīng)用在該 audio 上。

.setLoop ( value : Boolean ) : this

設(shè)置source.loop的值 (是否循環(huán)播放).

.setLoopStart ( value : Float ) : this

設(shè)置source.loopStart的值

.setLoopEnd ( value : Float ) : this

設(shè)置source.loopEnd的值

.setMediaElementSource ( mediaElement ) : this

應(yīng)用傳入的HTMLMediaElement類型對(duì)象作為音源。并且設(shè)置hasPlaybackControl為false。

.setMediaStreamSource ( mediaStream ) : this

應(yīng)用傳入的MediaStream類型對(duì)象作為音源。并且設(shè)置hasPlaybackControl為false。

.setNodeSource ( audioNode ) : this

設(shè)置source給audioBuffer, 和設(shè)置sourceType給 'audioNode'.并且設(shè)置hasPlaybackControl為false.

.setPlaybackRate ( value : Float ) : this

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

.setVolume ( value : Float ) : this

設(shè)置音量.

.stop () : this

如果hasPlaybackControl是true, 停止播放.

源碼

src/audio/Audio.js


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)