在通过浏览器发送之前强制SWF在服务器的本地驱动程序中加载文件

时间:2016-01-31 20:57:36

标签: html actionscript-3 flash flash-cs6

我正在构建一个Flash应用程序,它需要使用URLLoader加载xml文件。在使用flash专业版本地机器上开发应用程序时,我可以通过

轻松加载它
        private var myLoader:URLLoader = new URLLoader(new URLRequest("./com/assets/config.xml"));

当我发布应用程序并单击生成的html并且应用程序完全加载到浏览器上时。

如果我创建一个服务器(localhost:1111),它通过连接器上的浏览器传递html文件,则html文件不会加载应用程序(.swf)。

在尝试调试时,我发现如果我按如下所示更改myLoader变量,则html文件会正确加载swf。

    private var myLoader:URLLoader = new URLLoader(new URLRequest("http://localhost:1111/com/assets/config.xml"));

我认为SWF在我的浏览器上加载html之后会发出另一个GET请求,这就是SWF在没有更改的情况下无法工作的原因。

有什么办法可以在通过浏览器传递之前在SWF中加载xml文件。这是为了避免再次调用服务器。我非常感谢您澄清我对解决方法的理解和建议。

1 个答案:

答案 0 :(得分:1)

如果要上传SWF并让用户访问配置XML,则需要将XML托管在用户可以访问的位置。您自己以外的任何人都无法访问您的本地计算机(localhost:1111)(在用户计算机上调整的一些不寻常的主机之外)。

当您设置托管和Web服务器以通过HTTP实际提供文件时,您需要做一些事情:

  1. 在服务器上设置crossdomain file以定义允许哪些主机加载配置XML。
  2. 修改您的应用程序以从服务器加载数据,例如new URLRequest('http://your_domain_or_ip/config.xml')
  3. 您无法将XML文件的引用保留为相对./com/assets/config.xml的原因是因为如果文件系统中的文件被视为文件系统中的文件,SWF将仅在本地文件系统上加载文件浏览器。

    当SWF运行时,您创建的URLLoader实例将执行HTTP GET来加载XML文件。

    如果您想避免执行其他GET请求来获取XML,则必须使用[Embed]元标记将配置编译到SWF中。