【发布时间】:2016-07-11 14:27:19
【问题描述】:
这是一个正在进行的问题的一部分:triggering files from an array/for-loop
我遇到的问题是嚎叫实际上不是暂停,而是实际上是“静音”。当点击暂停时,嚎叫会静音,但会继续静默运行。我试过使用.stop(),但得到了相同的结果。
我正在使用onend 属性,该属性有效并表明.pause() 方法不起作用。当重复点击暂停/播放时,一切都会变得非常混乱!
在从数组中编写嚎叫声和相关控制按钮之前,暂停效果很好。自从使用了数组后,pause 方法就停止了正常工作。
这里是:fiddle of the current pause issue(控制台日志在那里工作)
这是js:
var sounds = ['sound1', 'sound2'];
var howls = {};
sounds.forEach(function(sound){
howls[sound] = new Howl({
urls: ['http://powellian.com/assets/audio/' + sound + '.mp3', 'http://powellian.com/assets/audio/' + sound + '.ogg'],
volume: 1,
onplay: function() {
console.log('PLAYING: ' + sound);
$('#' + sound).removeClass('static').addClass('PLAYING');
$('#' + sound + ' span.play').addClass('hide');
$('#' + sound + ' span.pause').removeClass('hide');
},
onpause: function() {
console.log('PAUSED: ' + sound);
$('#' + sound).removeClass('PLAYING').addClass('PAUSED');
$('#' + sound + ' span.play').removeClass('hide');
$('#' + sound + ' span.pause').addClass('hide');
},
onend: function() {
console.log('ENDED: ' + sound);
$('#' + sound).removeClass().addClass('static');
$('#' + sound + ' span.play').removeClass('hide');
$('#' + sound + ' span.pause').addClass('hide');
}
});
// PLAY btn
$('#' + sound + ' span.play').click(function () {
howls[sound].play();
});
// PAUSE btn
$('#' + sound + ' span.pause').click(function () {
howls[sound].pause();
});
});
为了记录,这是使用 Howler v1.1.29。使用 v2.0 进行了尝试,但由于各种其他原因根本无法工作(例如,不会加载数组 - 我不需要 2.0,但如果它有帮助,我愿意运行这个问题的测试)。
任何帮助将不胜感激,并提前致谢。
【问题讨论】:
-
2.0 不会加载数组是什么意思?你把
urls改成src了吗? -
No 一直是
urls,但刚刚在本地更新了凉亭,2.0 现在工作正常,尽管这里列出了同样的问题。之前已更新,错误消息是该数组无法加载。我已经离开了 1.1.29 的小提琴,因为不确定从 cdnjs 使用哪个 2.0-beta* 链接 -
希望澄清这个问题:当
pause被击中时,声音会静音,但仍然有效地静默运行并触发onend- 如果您再次快速触发play,它只会导致onend成为发射了两次。这发生的次数与您触发play的次数一样多,声音实际上是在播放/分层,而不是暂停。 console.logs 说明了这一点。希望对你有帮助,谢谢
标签: javascript jquery audio howler.js