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
2
3
可以向构造成传入一个数组。
var myGroup = new buzz.group([
mySound1,
mySound2,
mySound3
]);
1
2
3
4
5
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
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
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
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
2
3
4
5
group.bindOnce( event, callback )
添加一个或多个事件侦听器,但只执行一次。详情请见事件部分。
myGroup.bindOnce("pause", function () {
alert("仅会在第一次暂停时执行");
});
1
2
3
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
2