在JavaScript中连续播放两个文件
Playing two files in a row in JavaScript
我看不懂。所以,我正在制作一个简单的脚本,告诉当前时间。audiocontainer是一个音频元素,mp3play()函数已经在前面定义过了。这个想法是这样做的:
[play hourXX.mp3] ->播放结束-> [play minutesXX.mp3] ->删除监听器,因此停止。
- 问题是:
如果没有 removeEventListener()函数,minuteXX.mp3将无限循环("这是12和54分钟……54分钟……54分钟……),因为它一直在最后触发听众。
使用 removeEventListener()函数,音频根本不开始。你知道为什么吗?
或者有没有更简单的方法来连续播放2个mp3 ?
function telltime() {
var d = new Date();
var h = d.getHours();
var m = d.getMinutes();
audiocontainer.addEventListener('ended', function () {
mp3play('./time/minutes/minute'+m.toString()+'.mp3');
audiocontainer.removeEventListener('ended', function(), false); // stop!
}, true);
mp3play('./time/hours/hour'+h.toString()+'.mp3');
}
既然你的问题是有点"本地化"(它不工作,因为语法错误),我已经抽象了你的问题,让我提供一个答案,是对别人也有用。
如何在一行中播放多个mp3文件
把这个包含到你的上下文中:
var Mp3Queue = function(container, files) {
var index = 1;
if(!container || !container.tagName || container.tagName !== 'AUDIO')throw 'Invalid container';
if(!files || !files.length)throw 'Invalid files array';
var playNext = function() {
if(index < files.length) {
container.src = files[index];
index += 1;
} else {
container.removeEventListener('ended', playNext, false);
}
};
container.addEventListener('ended', playNext);
container.src = files[0];
};
像这样使用:
//whatever is your audio element
var container = document.getElementById('container');
//play files in a row
new Mp3Queue(container, [
'http://incompetech.com/music/royalty-free/mp3-royaltyfree/Sweeter%20Vermouth.mp3',
'http://incompetech.com/music/royalty-free/mp3-royaltyfree/Happy%20Boy%20Theme.mp3'
]);
下面是工作示例:http://jsfiddle.net/fYjLx/
在你的特殊情况下,它将是:
function telltime() {
var d = new Date();
var h = d.getHours();
var m = d.getMinutes();
new Mp3Queue(container, [
'./time/hours/hour'+h.toString()+'.mp3',
'./time/minutes/minute'+m.toString()+'.mp3'
]);
}
相关文章:
- 如何使用grunt durandal输出两个文件
- 使用 Node js 从另一个文件调用两个文件
- 在两个文件之间共享按钮变量
- 如何将包含在 eval 方法中的两个文件作为线程运行
- 如何将代码分成两个文件,并仍然使其在node.js中工作
- Ajax 调用时出错 ->发送两个文件而不是一个文件
- 创建一个包含两个文件 json 的 Angularjs 过滤器
- JavaScript:如何最有效地管理跨两个文件的数据导入
- 两个文件使用超级测试与摩卡导致 EADDRINUSE
- 我可以在同一本地网络但不在同一主机中的两个文件之间使用PostMessage吗
- 从Array结果中获取两个文件
- 两个文件输入表单中的文件值相同
- 简化php表单验证-将两个文件合并为一个文件
- 如何检查两个文件是否具有相同的内容
- 复制/b除两个文件外的同一类型的所有文件
- JavaScript/PowerShell:比较两个文件并将结果保存到文本文件
- Gulp-用Gulp ruby sass创建两个文件
- 如何在Node中的两个文件之间共享模块私有数据
- 在JavaScript中连续播放两个文件
- 如何链接多个javascript文件,其中两个文件都有onload事件