无法在我的 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 项目中播放音频的主要内容,如果未能解决你的问题,请参考以下文章

无法在电子应用程序中显示 Flash 内容

将 Flash 转换为 html5 后对齐内容时出现问题

HTML5 的开发和文档是不是足够?

html 5 flash/动画自定义字体

HTML5抢占Flash份额Adobe Flash Player 将无法在 Windows 10 系统中运行

无法将 vue 相关的 npm 包包含到我的 Laravel + Vue 项目中