尝试从我们的CDN加载Soundmanager2的SWF文件。我假设我遇到了跨域闪存问题。有人这样做过吗?它甚至可能吗?
这就是我正在尝试的......
var allowxdomainscripting = true;
var xdomain = "*";
soundManager.url = 'http://cdn.mycompany.com/inc/soundmanager2.swf';
在文档中有一个非常模糊的引用,但它很模糊......
http://www.schillmania.com/projects/soundmanager2/doc/generated/src/SoundManager2_AS3.html
任何帮助表示赞赏。
答案 0 :(得分:3)
我也曾遇到过这个问题。 SoundManager2现在附带了swf文件的跨域版本。
它们是用swf / soundmanager2_flash_xdomain.zip压缩的。
https://github.com/scottschiller/SoundManager2/tree/master/swf
只需解压缩并替换为SoundManager2提供的标准.swf文件,您的问题就会消失。
答案 1 :(得分:3)
非常感谢你!
在浪费了几个小时试图让SM2 SWF嵌入工作之后,我偶然发现了这个答案。
我要“复活”这个以添加一些关键字,以便Google为这个答案编制索引......也许下一个试图在跨域环境中嵌入SoundManager2 SWF的人会比我做得更快一点: )
我在闪存初始化时遇到的错误是:在NPObject上调用错误方法
在JS方面,这是打破一切的代码:
// attempt to talk to Flash
flash._externalInterfaceTest(false); <- KABOOM!
NPObject错误可能有很多含义,但通常情况下(在我们的环境中)意味着:您试图通过JS在托管在不同域上的Flash影片上调用ExternalInterface。
过了一会儿,我弹出了SoundManager2 ActionScript 3代码,看到了这个:
public var allow_xdomain_scripting:Boolean = false;
public var xdomain:String = "*";
[... other stuff ...]
if (allow_xdomain_scripting && xdomain) {
Security.allowDomain(xdomain);
version_as += ' - cross-domain enabled';
}
当然,这意味着您可能正在使用的电影(无论是否调试)将无法从其他域(CDN或其他任何域)访问。
解决方法是@ amlutz160的答案 - ,以使用swf / soundmanager2_flash_xdomain.zip中包含的文件,这些文件使用allow_xdomain_scripting = true 进行编译。
发布这个非常尴尬,解决方案显而易见,但我失去了相当多的时间和AFAIK这个神秘的zip文件的内容没有记录在任何地方(我找到了{ {3}})。
PS:我将这个答案转发给tangential mention on SM2 forums所以也许他可以稍微更新一下SoundManager2文档:P
问候!