我试图通过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。
答案 0 :(得分:3)
感谢您发布github链接。这很有帮助。幸运的是,我有一个非常简单的答案。
重命名&#34;对象&#34;你在Main.js上课,你应该好好去。
- 答案很长 -
我抛出了一个断点,抛出了错误,它表明当SoundJS尝试创建一个LoadItem时,它会失败。这是因为它应该将它作为Object接收的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中,您正在定义一个&#34; Object&#34; class,它扩展了CreateJS Shape。它是全局的,因为代码周围没有方法闭包,因此它会覆盖全局Object类/原型。
我之所以包含这个解释的原因,是因为我无法弄清楚发生了什么,直到我完成了我的步骤,以显示应用程序中的原型被破坏,大多数是在我明白的原因之前写出来的。我认为这可能有一些兴趣:)