Javascript CreateJS-在声音注册期间引发类型无法识别错误

Javascript CreateJS-在声音注册期间引发类型无法识别错误,javascript,html,createjs,soundjs,Javascript,Html,Createjs,Soundjs,我正在尝试通过SoundJS声音注册加载声音,并出现以下错误: createjs.js:15 Uncaught Error: Type not recognized. 我认为soundjs库在定位我的文件或文件扩展名方面有问题,但我使用的是.ogg,它与我看到的所有示例都是内联的 这是我的密码: createjs.Sound.alternateExtensions = ["mp3", "ogg"]; createjs.Sound.on("fileload", function(event)

我正在尝试通过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)
}
createjs.Sound.alternateExtensions=[“mp3”、“ogg”];
createjs.Sound.on(“文件加载”,函数(事件){
console.log(事件);
},这个);
对于(var i=0;i

soundManifest是一个对象数组,其中一个源项提供了.ogg文件的路径和一个id。我已经对路径名进行了两次和三次检查,所以很确定不是这样。有什么想法吗?我正在使用Chrome进行开发。

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

重命名您在Main.js中创建的“Object”类,您就可以开始了。

--长话短说--

我在抛出的错误中抛出了一个断点,它表明当SoundJS尝试创建LoadItem时,它失败了。这是因为它应该将接收到的LoadItem视为一个对象,但下面的行失败了:

} else if (value instanceof Object && value.src) {
    // This code should be executed
}
起初,我认为SoundJS中有一个bug,我们在过去两年中不知怎么错过了,但仔细检查发现,应用程序中的对象原型混乱不堪。如果打开任何浏览器窗口并点击控制台,将返回
true

({}) instanceof Object
// true
但是,在运行应用程序时,它会返回
false

当我删除除CreateJS和main之外的所有其他类,然后尝试以下操作时,问题变得很清楚:

new Object();
// Throws an error that includes info about "Victor"
在main.js中,您定义了一个“Object”类,它扩展了CreateJS形状。它是全局的,因为代码周围没有方法闭包,所以它会覆盖全局对象类/原型



我之所以加入这个解释,是因为我无法弄清楚到底发生了什么,直到我的步骤表明,原型在应用程序中被破坏,大部分是在我意识到原因之前写出来的。我想这可能会引起一些兴趣:)

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

重命名您在Main.js中创建的“Object”类,您就可以开始了。

--长话短说--

我在抛出的错误中抛出了一个断点,它表明当SoundJS尝试创建LoadItem时,它失败了。这是因为它应该将接收到的LoadItem视为一个对象,但下面的行失败了:

} else if (value instanceof Object && value.src) {
    // This code should be executed
}
起初,我认为SoundJS中有一个bug,我们在过去两年中不知怎么错过了,但仔细检查发现,应用程序中的对象原型混乱不堪。如果打开任何浏览器窗口并点击控制台,将返回
true

({}) instanceof Object
// true
但是,在运行应用程序时,它会返回
false

当我删除除CreateJS和main之外的所有其他类,然后尝试以下操作时,问题变得很清楚:

new Object();
// Throws an error that includes info about "Victor"
在main.js中,您定义了一个“Object”类,它扩展了CreateJS形状。它是全局的,因为代码周围没有方法闭包,所以它会覆盖全局对象类/原型



我之所以加入这个解释,是因为我无法弄清楚到底发生了什么,直到我的步骤表明,原型在应用程序中被破坏,大部分是在我意识到原因之前写出来的。我想这可能会引起一些兴趣:)

您发布的代码中的所有内容看起来都很好(不过如果您传入的文件名中已经有“ogg”,则不需要指定“ogg”作为替代扩展名)。你能提供更多的信息吗?你有我可以查看的演示吗?发生这种情况的浏览器是什么?你能出示你的清单吗?当然,我只是把它放在github上:。。。清单在第105行声明,相关代码从第180行开始。我真的不知道是什么原因造成的。。。我一直在使用chrome,但我将开始在其他浏览器上进行测试。您发布的代码中的所有内容看起来都很好(尽管您不需要将“ogg”指定为备用扩展名,如果它已经在您传递的文件名中)。你能提供更多的信息吗?你有我可以查看的演示吗?发生这种情况的浏览器是什么?你能出示你的清单吗?当然,我只是把它放在github上:。。。清单在第105行声明,相关代码从第180行开始。我真的不知道是什么原因造成的。。。我一直在使用chrome,但我将在其他浏览器上开始测试。哦!德普。。。我应该知道创建一个像Object这样的常用名称的类会导致问题!这解决了问题。非常感谢:)我刚刚犯了完全相同的错误。这可能节省了我几天的挖掘时间。哦!德普。。。我应该知道创建一个像Object这样的常用名称的类会导致问题!这解决了问题。非常感谢:)我刚刚犯了完全相同的错误。这可能帮我节省了好几天的挖掘时间。