我正在构建一个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文件。这是为了避免再次调用服务器。我非常感谢您澄清我对解决方法的理解和建议。
答案 0 :(得分:1)
如果要上传SWF并让用户访问配置XML,则需要将XML托管在用户可以访问的位置。您自己以外的任何人都无法访问您的本地计算机(localhost:1111
)(在用户计算机上调整的一些不寻常的主机之外)。
当您设置托管和Web服务器以通过HTTP实际提供文件时,您需要做一些事情:
new URLRequest('http://your_domain_or_ip/config.xml')
。 您无法将XML文件的引用保留为相对./com/assets/config.xml
的原因是因为如果文件系统中的文件被视为文件系统中的文件,SWF将仅在本地文件系统上加载文件浏览器。
当SWF运行时,您创建的URLLoader
实例将执行HTTP GET
来加载XML文件。
如果您想避免执行其他GET请求来获取XML,则必须使用[Embed]
元标记将配置编译到SWF中。