2011-10-31 94 views
0

我深化发展这个视频播放器: http://www.horsform.com/_WIP/mjf_2011/live/demo_player/_final/index.htmlAS3:crossdomain.xml的不工作

在上面的为例,播放器加载这个启动图像,视频的播放之前,显示它: http://www.horsform.com/_WIP/mjf_2011/live/demo_player/_final/videos/HF_REEL.jpg

-

在这里,我再告诉玩家加载相同的图像,但在另一个领域: http://www.horsform.com/_WIP/mjf_2011/live/demo_player/_final/index2.html

给出的形象是:http://www.daviddarx.com/HF_REEL.jpg

-

正如你所看到的,它不工作了。 我在Google上搜索,发现我在理论上不得不添加一个crossdomain.xml,以确保没有安全保护,避免swf从其他域加载图像。

我这样把我的不同领域的这两个文件,告诉SWF可以从所有的*域接受文件: http://www.horsform.com/crossdomain.xml

http://www.daviddarx.com/crossdomain.xml

但它仍然是不工作...你知道什么是错的?我错过了什么吗? 预先感谢您的帮助!

戴维斯

回答

1

的RTE实际上告诉你该怎么做:

策略文件是必需的,但将checkPolicyFile标志未设置 加载此媒体时。

从AS3帮助:

当调用Loader对象的load()方法,可以指定 上下文参数,这是一个LoaderContext对象。该 LoaderContext类包括三个属性,让你定义的加载的内容如何被使用的 背景:

将checkPolicyFile:加载图像文件 (不是SWF文件)时,仅使用此属性。为其他 以外的域中的映像文件指定此文件,而不是包含Loader对象的文件。如果将此 属性设置为true,则加载程序将检查源服务器是否存在 跨域策略文件(请参阅网站控制(跨域策略 文件))。如果服务器授予加载程序域的权限,则加载程序域中SWF文件的动作脚本 可以访问加载的图像中的数据 。换句话说,您可以使用Loader.content 属性获取对表示加载图像的 的Bitmap对象的引用,或者使用BitmapData.draw()方法从加载的图像访问像素 。

所以你需要传递一个LoaderContext实例与checkPolicyFile标志设置为true为Loader#load方法

喜欢的东西的参数:

var loader : Loader = new Loader(); 
loader.load(new URLRequest('http://www.daviddarx.com/HF_REEL.jpg'), new LoaderContext(true)); 
+0

太好了!感谢您提供非常有效的支持!这只是正常工作:http://www.horsform.com/_WIP/mjf_2011/live/demo_player/_final/index2.html 顺便说一下,以便我可能会自己解决更多的问题,什么是什么你打电话给RTE?那是否允许你在浏览器中看到actionscript错误?感谢您的帮助! – daviddarx

+0

RTE是播放swf时引发的运行时错误。还有CTE(编译时间错误)在编译swf时被编译器抛出。如果您安装Flash播放器的调试版本,您可以看到RTE的。你可以在这里找到它们: http://www.adobe.com/support/flashplayer/downloads.html – Creynders