为什么我的外部资源没有通过ActionScript中的URL / Loader加载(在很多情况下)?

时间:2015-04-26 02:46:31

标签: actionscript-3 flash

我正在开发一款Flash游戏,它从本地网址加载资源。此网址在本地解析,类似http://example.dev。这只包含静态资源,因此如果我通过curl点击资源,http://example.dev/images/randomtiles/grass.png之类的内容实际上就是有效图像。

但是,我使用两个浏览器进行测试。一个是使用Adobe Flash Player 15.0.0.189的Google Chrome,另一个是使用Adobe Flash Player 11.2.202.457的Firefox。我使用的是Ubuntu 14.04(也许这是一个错误而不是8层问题)。

在法新社15中,点击网址http://example.dev/images/randomtiles/grass.png根本不起作用。在AFP 11中,仅当我连接到Internet时,才能使用网址http://example.dev/images/randomtiles/grass.png。点击curl的网址始终有效。直接使用Chrome或Firefox访问网址,始终有效。

用于通过闪存拍摄图像的机制有点长,无法解释,但它基本上是基于装载机:

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void {
    try {
        addCacheCallback(entry, Bitmap(LoaderInfo(e.target).content));
    } catch(e:Error) {
        errorCallback(e);
    }
});
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorCallback);
loader.load(new URLRequest("http://example.dev/images/randomtiles/grass.png"));

我期待什么:由于资源服务器是本地维护的(在本机中),我希望我的游戏中的资源始终,无论Flash版本如何

Flash Player会发生什么?或者......我在那里错过了什么? (由于环境问题我无法调试,我仍在努力)。

1 个答案:

答案 0 :(得分:0)

您的.swf文件是否来自同一个域?

如果不是,则必须向您的网站添加crossdomain.xml文件。 This documentation可能有帮助。

测试这是否是您遇到的问题的最简单方法是将名为crossdomain.xml的文件添加到您的网站根目录:



<?xml version="1.0"?> 
<!-- http://www.foo.com/crossdomain.xml --> 
<cross-domain-policy> 
  <allow-access-from domain="*" /> 
</cross-domain-policy>
&#13;
&#13;
&#13;

请注意,在实践中,您可能希望将应允许访问的域列入白名单。