我有一个使用SoundMixer控制音量的AS3预加载电影加载到一个较大的文件中。当两个文件都在同一台服务器上时,一切都能在本地和在线上正常工作。
然而,当我拆分文件时,假设将加载器swf放在一台服务器上,而较大的内容放在另一台服务器上,当我单击音量按钮时,我会得到这个错误。(此错误实际上在测试加载程序swf时输出,从在线服务器加载内容。)
Security Sandbox Violation
SecurityDomain 'http://www.onlinedomain.com/content.swf' tried to access incompatible context 'file:///LocalDisc/WORK//loader.swf'
SecurityError: Error #2070: Security sandbox violation: caller http://www.onlinedomain.com/content.swf cannot access Stage owned by file:///LocalDisc/WORK//loader.swf.
at flash.media::SoundMixer$/set soundTransform()
at content_fla::MainTimeline/stopSound()
at content_fla::MainTimeline/soundMenuHandler()我已经将crossdomain.xml文件添加到两台服务器以允许访问。
在我的content.swf中处理声音的函数是:
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.media.SoundMixer;
function soundMenuHandler(event:MouseEvent):void {
if (sound == "ON") {
sound_btn.gotoAndStop(3);
stopSound();
} else {
sound_btn.gotoAndStop(1);
playSound();
}
}
function playSound():void {
sound = "ON";
SoundMixer.soundTransform = new SoundTransform(1);
}
function stopSound():void {
sound = "OFF";
SoundMixer.soundTransform = new SoundTransform(0);
}问题似乎是由于SoundMixer访问loader.swf造成的。有没有人知道发生了什么以及如何解决这个问题?
发布于 2011-03-13 17:51:52
找到解决方案!
尽管crossdomain.xml策略文件确实包含了这个域(所以我不确定它为什么不能工作)。通过将此代码添加到加载器文件中,我可以显式地授予访问权限。
Security.allowDomain("www.loadeedomain.com");
发布于 2011-03-11 23:36:24
file:///LocalDisc/WORK//loader.swf听起来像是在本地测试。要在本地测试,您可以在Flash安全管理器中禁用文件或文件夹的安全检查:
http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html#117502
发布于 2011-03-12 08:17:27
修复你的嵌入代码,你有跨域的问题,也要确保你的crossdomain.xml达到标准并交付使用
allowscriptaccess = "sameDomain";
allownetworking = "all";https://stackoverflow.com/questions/5274251
复制相似问题