预加载音频文件/事件?
问题描述:
我预载我的所有资产之前,我开始一个基于JS的应用程序做:预加载音频文件/事件?
这工作得很好,当我刚png
在我的阵列,但是当我添加音频(MP3音乐)的DOM元素得到创建,但它永远不会启动onload
,所以应用程序永远不会启动。我已经尝试添加一个tmp.load()
,但它没有任何区别 - 我也无法在网上找到任何全面的信息。这种方法甚至可能吗? Audio()
是否会启动适当的事件?谢谢!
答
您正在寻找media events,其中说你可以使用例如loadeddata
。
我想解决的其他一些观点:
- 字符的正则表达式字符组内不需要逃跑。
- 为什么不使用jQuery创建元素并绑定事件处理程序?
我改变你的代码一点点:
$.each(assets, function() {
var r = /\.([^.]+)$/,
ext = r.exec(this), //get file type
tmp = ext[1] === 'png'
? $("<img>")
: $("<audio>"),
eventName = ext[1] === 'png'
? 'load'
: 'loadeddata';
tmp
.on(eventName, function() {
var i = assets.indexOf(this);
assets.splice(i, 1);
if (!assets.length){
console.log('all loaded');
app.build();
}
})
.attr("src", this); // only set after adding the load callback
// to avoid a possible race condition
});
+0
感谢RegExp上的提示 – m90 2012-02-17 17:09:26
是'preload'属性不适合你? – Lloyd 2012-02-17 19:40:16