【问题标题】:AS3: crossdomain.xml doesn't workAS3:crossdomain.xml 不起作用
【发布时间】:2011-10-31 18:05:19
【问题描述】:

我正在开发这个视频播放器: http://www.horsform.com/_WIP/mjf_2011/live/demo_player/_final/index.html

在上面的示例中,播放器正在加载此起始图像,以在播放视频之前显示它: 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

但它仍然无法正常工作...您知道出了什么问题吗?我错过了什么吗? 提前感谢您的帮助!

戴维斯

【问题讨论】:

    标签: flash actionscript-3 load external


    【解决方案1】:

    RTE 实际上会告诉您该做什么:

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

    来自 AS3 帮助:

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

    checkPolicyFile:仅在加载图像文件时使用此属性 (不是 SWF 文件)。为来自其他域的图像文件指定此项 而不是包含 Loader 对象的文件。如果你设置这个 属性为 true,加载程序检查源服务器是否存在 跨域策略文件(请参阅网站控制(跨域策略) 文件))。如果服务器授予Loader域权限, 来自 Loader 域中 SWF 文件的 ActionScript 可以访问 加载的图像。换句话说,您可以使用 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 ) );
    

    【讨论】:

    • 太棒了!感谢您如此有效的支持!这很好用:horsform.com/_WIP/mjf_2011/live/demo_player/_final/index2.html 顺便说一句,这样我可能会自己解决更多问题,你所谓的 RTE 是什么?那是让您在浏览器中看到动作脚本错误的东西吗?感谢您的帮助!
    • RTE 是播放 swf 时抛出的运行时错误。还有编译器在编译 swf 时抛出的 CTE(编译时错误)。如果您安装了 Flash 播放器的调试版本,您可以看到 RTE。你可以在这里找到它们:adobe.com/support/flashplayer/downloads.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 2016-04-27
    相关资源
    最近更新 更多