2011-04-06 57 views
0

我想本地保存带有ActionScript的XML文件作为临时文件(如果可能的话)。我已经读过所有关于AS如何不让你在没有对话的情况下做到这一点(并且我理解安全问题),但肯定必须有某种临时选项?我需要动态生成一些XML传递给另一个SWF使用URLVariables(我无法控制这部分)。现在,我只能通过以前创建的XML文件。我想用xml替换us/data.xml我创建了。使用ActionScript创建临时XML文件

+0

您是传递实际的xml文件,还是仅仅链接到xml文件?它似乎只是链接 – divillysausages 2011-04-06 08:17:36

+0

现在它是一个存储在磁盘上的本地xml文件的路径。问题在于我从ActionScript修改了XML,现在需要弄清楚如何通过它。 – 2011-04-06 11:23:38

回答

0

您应该能够直接通过URLRequestURLVariables对象传递XML对象。喜欢的东西:

var x:XML = ...; 
var bytes:ByteArray = new ByteArray; 
bytes.writeUTFBytes(x); 
bytes.compress(); 

var req:URLRequest = new URLRequest(url) 
req.data = bytes; 
ldr.load(urlReq); 

如果你有问题,你可能需要使用Base64编码它,在这种情况下:

var x:XML = ...; 

var req:URLRequest = new URLRequest(url) 
req.data = xml; 
ldr.load(urlReq); 

如果XML是大的,那么你可以用ByteArray它压缩,您可以使用此lib目录下:http://jpauclair.net/2010/01/09/base64-optimized-as3-lib/

也为一些替代品,让你看着LocalConnectionhttp://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/LocalConnection.htmlSharedObject.getRemote()(需要安装Flash媒体服务器):http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/SharedObject.html#getRemote()

+0

这似乎并不奏效。我正在使用[从这里]获得的swf(http://backpace.com/mapapp/us/us.zip)。我不会说我对AS有很多了解,但在我看来,我的swf想要一个文件,并且期望打开一个文件并对其进行处理。因此,传递原始数据并不是它想要的。 – 2011-04-06 13:44:36

+0

如果您无法访问其他SWF(如将其更改为接受地址或XML对象),那么您可以绕过它的唯一方法是通过服务器脚本传递。如同,将XML传递给PHP,让它保存文件(或覆盖原文),然后发送第二个Flash文件作为文件的名称。您还必须自己跟踪删除文件(因为Flash无法删除系统文件) – divillysausages 2011-04-06 13:50:40

+0

有关如何将XML从SWF传递到PHP的任何提示? – 2011-04-06 16:11:19