无法在我的 Flash / HTML5 / Canvas 项目中播放音频
Posted
技术标签:
【中文标题】无法在我的 Flash / HTML5 / Canvas 项目中播放音频【英文标题】:Can't get audio to play in my Flash / HTML5 / Canvas project 【发布时间】:2015-06-25 19:39:44 【问题描述】:在基于 Flash 的 Canvas 项目中播放声音时遇到很多问题。我在这里使用基本示例 (http://createjs.com/Docs/SoundJS/classes/Sound.html) 以便工作,我得到的只是黑屏和以下错误:
SyntaxError: missing ) after argument list
我的 JS 文件中的内容如下:
createjs.Sound.on("fileload", createjs.proxy(this.loadHandler, (this));
所以我添加了额外的 ) 但现在又出现了一个错误:
TypeError: createjs.Sound 未定义
这是什么:
createjs.Sound.registerPlugins([createjs.WebAudioPlugin, createjs.FlashAudioPlugin]);
这里发生了什么?为什么我不能直接玩这个?
这是完整的代码:
createjs.Sound.registerPlugins([createjs.WebAudioPlugin, createjs.FlashAudioPlugin]);
createjs.Sound.alternateExtensions = ["mp3"];
createjs.Sound.on("fileload", createjs.proxy(this.loadHandler, (this)));
createjs.Sound.registerSound("sounds/LaGrange.mp3", "sound");
function loadHandler(event)
// This is fired for each sound that is registered.
var instance = createjs.Sound.play("sound"); // play using id. Could also use full source path or event.src.
instance.on("complete", createjs.proxy(this.handleComplete, this));
instance.volume = 0.5;
【问题讨论】:
【参考方案1】:这很尴尬。该示例确实有 2 个错误。第一个是丢失的“)”,您已捕获并更正了它。第二个是 FlashAudioPlugin 没有完全设置好。在注册插件之前,您需要添加此行来设置 FlashAudioPlugin.swf 的路径:
createjs.FlashAudioPlugin.swfPath = "../src/soundjs/flashaudio";
感谢您了解这个。我已经将它的固定版本推送到github。此外,如果您想从中测试更多工作示例,所有demos 都经过了很好的测试。
希望对您有所帮助。
【讨论】:
【参考方案2】:如果您在本地测试(即,不在网络服务器上 - 远程或本地),则 WebAudio 无法播放,因为它使用 XHR 加载它,这不能跨域工作(使用 file:/// 是也被认为是不安全的)
将其更改为仅在测试时使用 HTMLAudio,它应该可以工作。
【讨论】:
SoundJS.WebAudioPlugin 在本地使用时禁用,因此在这种情况下,如果您使用本地测试,它应该已经回退到 FlashAudioPlugin。 谢谢@OJay,我忘了内部检查。以上是关于无法在我的 Flash / HTML5 / Canvas 项目中播放音频的主要内容,如果未能解决你的问题,请参考以下文章