如何为我的音频创建暂停功能?我的下面的脚本中已经有一个播放函数。
http://pastebin.com/uRUQsgbh http://pastebin.com/uRUQsgbh
function loadSound(url) {
var request = new XMLHttpRequest();
request.open('GET', url, true);
request.responseType = 'arraybuffer';
// When loaded decode the data
request.onload = function() {
// decode the data
context.decodeAudioData(request.response, function(buffer) {
// when the audio is decoded play the sound
playSound(buffer);
}, onError);
}
request.send();
}
function playSound(buffer) {
sourceNode.buffer = buffer;
sourceNode.noteOn(0);
}
但我怎样才能暂停或停止它呢?
简短的回答是“你无法暂停它 - 你可以通过调用 sourceNode.noteOff(0); 来停止它,正如 idbehold 所说的那样”。
您无法暂停它,原因与音频线上没有“暂停”按钮相同 - 因为数据不断通过它运行。您可以实现一个可以暂停的记录器节点,但在某些时候,如果您不取消暂停,它将缓冲大量数据。
实现这种情况的通常方法是跟踪您在播放中的位置(例如,通过记住您何时开始),然后当您想要暂停时,您会记住该偏移量,调用 noteOff(0),然后当您想要暂停时,调用 noteOff(0)重新开始播放创建一个指向同一缓冲区的新节点,并使用偏移量调用 noteOnGrain。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)