在actionscript中打开一个URL并加载数据

时间:2011-06-15 16:45:22

标签: flash actionscript-3 actionscript

如何在ActionScript 3中从Web加载资源(如JSON或XML文档)?

由于

2 个答案:

答案 0 :(得分:1)

您需要拥有跨域策略文件才能访问未在您自己的域上托管的数据。

  

您无法加载变量或XML数据   从另一个到另一个Flash电影   域。例如,Flash电影   装载自   http://www.yourserver.com/flashmovie.swf   可以访问驻留在的数据   http://www.yourserver.com/data.txt。   文本文件位于   与SWF相同的域名。

     

但是,尝试从中加载数据   http://www.NotMyServer.com/data.txt   将失败,没有错误消息   显示。加载动作将导致   出现一个警告对话框。

     

注意:此安全功能不会   影响播放的Flash电影   独立投影仪。

来源:Cross-domain policy for Flash movies

完成设置后,您可以通过URLLoader访问XML文件,如下所示:

var XMLData:XML;

var XMLLoader:URLLoader = new URLLoader();
XMLLoader.addEventListener(Event.COMPLETE, XMLCompleteEventHandler);
XMLLoader.load(new URLRequest("http://my.xml.file"));

function XMLCompleteEventHandler(evt:Event):void
    {
    evt.currentTarget.removeEventListener(Event.COMPLETE, XMLCompleteEventHandler);
    XMLData = new XML(evt.currentTarget.data);
    }

我不确定JSON文件是否也需要跨域策略文件,但我假设如此。在任何一种情况下,您都可以通过使用一些JavaScript + ExternalInterface例程来绕过此安全检查。 AIR应用程序不需要跨域策略文件。

您可以在as3corelib

中找到JSON解析器

答案 1 :(得分:0)

有很多方法可以实现这一点,这个问题已经以各种方式回答了几次。

尝试搜索Flash Php通信。

要加载XML文档,请查找URLLoader类。 对于JSON,您可以通过SWFObject查看传递变量,还可以查看Zend Amf Server。