CreateJS - 在声音注册期间抛出类型无法识别的错误

时间:2016-04-19 05:27:10

标签: javascript html html5 createjs soundjs

我试图通过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。

1 个答案:

答案 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类/原型。

我之所以包含这个解释的原因,是因为我无法弄清楚发生了什么,直到我完成了我的步骤,以显示应用程序中的原型被破坏,大多数是在我明白的原因之前写出来的。我认为这可能有一些兴趣:)