我正在尝试通过我的 Flash 项目播放 Youtube 视频。视频播放了,但我收到以下错误,它破坏了我项目的其余部分。我找不到任何有这个确切错误的地方。我一直试图理解它在告诉我什么,但我就是无法理解它。
错误:
*** Security Sandbox Violation ***
SecurityDomain 'http://s.ytimg.com/yts/swfbin/apiplayer3-vflmoXxFm.swf'
tried to access incompatible context 'file:flashProject.swf'
这是我为播放器编写的代码:
Security.allowDomain("www.youtube.com");
var my_player:Object;
var my_loader:Loader = new Loader();
my_loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3"));
my_loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit);
function onLoaderInit(e:Event):void{
addChild(my_loader);
my_player = my_loader.content;
my_player.addEventListener("onReady", onPlayerReady);
}
function onPlayerReady(e:Event):void{
my_player.setSize(600,300);
my_player.cueVideoById("76BboyrEl48",0);
my_player.x = stage.stageWidth/2 - my_player.width/2;
my_player.y = stage.stageHeight/2 - my_player.height/2;
}
这是我最后一年大学项目的一部分,所以如果有人有任何想法,我会非常乐意尝试一下。提前致谢 :)
出于安全原因,FlashPlayer 将本地和远程(网络)两个沙箱分开。有时您只能使用其中之一,您不能同时加载两者的内容。从本地文件系统加载的每个 swf 都被考虑在本地沙箱中,其他所有内容都被考虑在网络沙箱中。
所以现在你的swf是从文件系统加载的,而不是从网络服务器加载的,并且flash将其视为在本地沙箱中,然后你的swf从远程/网络沙箱加载内容,即从www.youtube.com加载内容,正如我上面提到的,swf在本地运行沙箱无法从远程沙箱加载内容,同样,远程沙箱中的 swf 也无法从本地沙箱加载内容。所以错误是很自然的。
allowDomain()
只允许来自同一沙箱的不同域,即您可以将 www.youtube.com 的内容加载到从 www.yourdomain.com 加载的 swf 中
有关安全沙箱的更多信息,请参阅:http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e3f.html
现在解决您的问题:
1) 您可以从本地主机设置本地 HTTP 服务器 locad swf。
2) 或者您可以将您的 swf 放入本地受信任的 swf 列表中。仅允许本地受信任的 swf 同时从两个沙箱加载内容。有关如何将 swf 放入本地受信任列表的信息,请参阅下面的链接。
http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e3f.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)