Group

Buzz 提供了对声音进行分组并控制它们的方法。

构造器

new buzz.group( sounds )

创建一组声音示例。更多细节请参见sound部分。

var mySound1 = new buzz.sound("/sounds/mysound1.ogg"),
    mySound2 = new buzz.sound("/sounds/mysound2.ogg"),
    mySound3 = new buzz.sound("/sounds/mysound3.ogg");
1
2
3

可以向构造成传入一个数组。

var myGroup = new buzz.group([
    mySound1,
    mySound2,
    mySound3
]);
1
2
3
4
5

也可以作为参数依次传入构造器。

var myGroup = new buzz.group(mySound1, mySound2, mySound3);
1

buzz.all()

该方法包含了所有预定义的 buzz 声音实例。

var mySound1 = new buzz.sound("/sounds/mysound1.ogg"),
    mySound2 = new buzz.sound("/sounds/mysound2.ogg"),
    mySound3 = new buzz.sound("/sounds/mysound3.ogg");

buzz.all().play();
1
2
3
4
5

方法

除访问器以外,几乎所有的声音方法都能够在组里使用。它们均支持链式调用。

myGroup.loop().play().fadeIn();
1

group.load()

加载声音。

myGroup.load();
1

播放

group.play()

加载声音并开始播放。

myGroup.play()
1

group.pause()

暂停播放,声音再次播放时会从当前暂停位置开始播放。

myGroup.pause();
1

group.togglePlay()

切换播放/暂停。

myGroup.togglePlay();
1

group.stop()

停止播放声音。再次播放则从起始位置开始。

myGroup.stop();
1

group.loop()

设置循环播放。

myGroup.loop();
1

group.unloop()

声音不再循环播放。

myGroup.unloop();
1

音量

group.mute()

静音。

myGroup.mute();
1

group.unmute()

取消静音。

myGroup.unmute();
1

group.toggleMute()

切换静音与否状态。

myGroup.toggleMute();
1

group.setVolume(volume)

设置音量。范围0-100

myGroup.setVolume(90);
1

group.increaseVolume([volume])

根据传入的值提升音量,默认值为1。

myGroup.increaseVolume(); // 当前音量 +1
1

group.decreaseVolume( [volume] )

根据传入的值降低音量,默认值为1。

myGroup.decreaseVolume(10); // 当前音量 -10
1

group.fadeIn( [duration], [callback] )

duration毫秒内将声音从0提升到100。结束之后调用传入的回调函数callback

myGroup.fadeIn(2000);
1

group.fadeOut( [duration], [callback] )

duration毫秒内将声音从当前音量降低到0。结束之后调用传入的回调函数callback

myGroup.fadeOut(2000);
1

group.fadeTo( volume, [duration], [callback] )

duration毫秒内将声音从当前音量变为volume。结束之后调用传入的回调函数callback

// 在2秒内将音量从20提升到90而后再降低回20.
myGroup.setVolume(20).fadeTo(90, 2000, function () {
    this.fadeTo(20, 2000);
});
1
2
3
4

事件

group.bind( event, callback )

对声音组添加一个或多个事件监听器。更多细节请参见事件部分。

myGroup.bind("ended pause", function () {
    var time = this.getTime(),
        duration = this.getDuration(),
        percent = buzz.toPercent(time, duration),
        message = "Stopped or paused at " + percent + "%";

    document.getElementById("percent").innerHTML = message;
});
1
2
3
4
5
6
7
8

事件可以设置命名空间,从而方便我们在解绑或触发某些事件时不影响其他事件。

myGroup.bind("ended.one pause.one", function () {
    alert("Event type one");
}).bind("ended.two pause.two", function () {
    alert("Event type two");
});
1
2
3
4
5

group.bindOnce( event, callback )

添加一个或多个事件侦听器,但只执行一次。详情请见事件部分。

myGroup.bindOnce("pause", function () {
    alert("仅会在第一次暂停时执行");
});
1
2
3

group.unbind( event )

解绑事件侦听器,可以按照命名空间解绑。

group.unbind("ended.one .two");
1

group.trigger( event )

执行绑定到事件的句柄。需要注意的是只是触发了函数,而非原生事件。

myGroup.trigger("ended.one .two");
1

访问器

group.setTime( seconds )

设置播放位置,单位

myGroup.setTime(90);
1

辅助方法fromTimer这里可以派上大用场。

myGroup.setTime(buzz.fromTimer("01:30"));
1

group.setPercent( percent )

设置percent百分比播放位置。

myGroup.setPercent(50); // 50%
1

group.setSpeed( speed )

设置播放速度,1为通常速度,2为双倍速度,依次类推。

myGroup.setSpeed(2); // x2
1

group.set( property, value )

直接在 HTML5 <audio>元素上设置原生属性。

myGroup.set("volume", 0.5);
myGroup.set("currentTime", 90);
1
2