2016-04-19 21 views
0

我试图加载过程中键入抛出无法识别错误通过SoundJS声音登记,并得到以下错误的声音:CreateJS声音登记

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

你发布的代码中的一切看起来都很好(尽管你不需要指定“ogg”作为备用扩展名,如果它已经在你传入的文件名上有)。你能提供更多信息吗?你有我可以看看的演示吗?这是什么浏览器?你能显示你的清单吗? – Lanny

+0

当然,我只是把它放在github上:https://github.com/pnob32/chump2020/blob/master/static/js/main.js ...清单声明在第105行,有关的代码从180行。我真的不知道是什么原因造成的......我一直在使用chrome,但是我将开始在其他浏览器上测试。 –

回答

2

感谢您发布github链接。这很有帮助。幸运的是,我有一个超级简单的答案给你。

重命名您在Main.js中创建的“Object”类,并且您应该很好。

- 长的答案 -

我扔一个断点时引发的错误,它表明,当SoundJS尝试创建一个LoadItem,它失败。这是因为它应该来处理它接收为对象LoadItem,但线下失败:

} else if (value instanceof Object && value.src) { 
    // This code should be executed 
} 

起初我还以为有,我们在某种程度上错过了在过去的2 SoundJS错误年,但仔细检查表明,应用程序中的对象原型已经搞乱了。如果你打开任何浏览器窗口,并击中了控制台,这将返回true

({}) instanceof Object 
// true 

但是在运行你的应用程序,它返回false

问题就清楚了,我删除比CreateJS其他主要所有其他类,然后尝试这样:

new Object(); 
// Throws an error that includes info about "Victor" 

在main.js,要定义一个“对象”类,它延伸CreateJS形状。它是全局的,因为代码没有方法闭包,所以它覆盖全局对象类/原型。


包括我这个解释的原因,是因为我无法弄清楚发生了什么事情,直到我有我的步骤,以表明原型大多在写出来我的原因才意识到问题的应用打破。我认为它可能有一些利益:)

+0

哦! DERP ...我应该知道创建一个像Object这样的常用名字的类会导致问题!这解决了这个问题。非常感谢你:) –

+0

我刚刚犯了完全一样的错误。这可能会为我节省数天的时间。 –