我试图通过SoundJS声音注册加载声音,并收到以下错误:
createjs.js:15 Uncaught Error: Type not recognized.
我认为soundjs库在定位文件或文件扩展名方面遇到问题,但是我使用的是.ogg,它与我所看到的所有示例都一致。
这是我的代码:
createjs.Sound.alternateExtensions = ["mp3", "ogg"];
createjs.Sound.on("fileload", function(event) {
console.log(event);
}, this);
for (var i = 0; i < soundManifest.length; i++) {
soundManifest[i].loaded = false;
console.log("loading " + soundManifest[i].src);
createjs.Sound.registerSound(soundManifest[i].src, soundManifest[i].id)
}
soundManifest是一个对象数组,其中的源项提供.ogg文件的路径,并提供一个ID。我已经对路径名进行了两次和三次检查,所以很确定不是这样。有任何想法吗?我正在使用Chrome进行开发。
最佳答案
感谢您发布github链接。这很有帮助。幸运的是,我为您提供了一个非常简单的答案。
重命名在Main.js中创建的“ Object”类,您应该一切顺利。
-长答案-
我把断点扔给了断点,它表明当SoundJS尝试创建LoadItem时,它失败了。这是因为它应该将接收到的LoadItem视为对象,但是下面的行失败了:
} else if (value instanceof Object && value.src) {
// This code should be executed
}
起初我以为SoundJS中存在一个错误,在过去的两年中我们还是有所遗漏,但是仔细检查发现您的应用程序中的对象原型被弄乱了。如果打开任何浏览器窗口,然后单击控制台,则将返回
true
:({}) instanceof Object
// true
但是,在运行您的应用程序时,它将返回
false
。当我删除除CreateJS和main以外的所有其他类,然后尝试执行以下操作时,问题变得很明显:
new Object();
// Throws an error that includes info about "Victor"
在main.js中,您定义了一个“对象”类,该类扩展了CreateJS Shape。它是全局的,因为代码周围没有方法闭包,因此它会覆盖全局的Object类/原型。
我之所以包含此解释,是因为直到我有步骤证明应用程序中的原型已被破坏,而且大部分原因是在我意识到这一点之前,我才弄清楚发生了什么。我认为这可能会引起一些兴趣:)