2010-12-19 47 views
0

我正在制作桌面Flash应用程序(AS3)。它为用户提供了保存和打开项目的机会。 我使用的FileReference打开项目文件将数据保存到Adobe Flash桌面应用程序

var fileRef:FileReference = new FileReference(); 
var ourTypes:Array=new Array(new FileFilter("Map Editor type (*.xml)", "*.xml")); 
fileRef.browse(ourTypes); 

,并通过使用fileRef.data使用文件内容。

var mainXml:XML; 
mainXml=new XML(fileRef.data); 

用户必须有机会在此文件中添加一些数据(不仅是读取)。如何将新数据保存在同一个文件中?

+1

看看这个artcle关于如何File/FileStream类:http://www.adobe.com/devnet/air/ajax/quickstart/articles/xml_prefs.html。注意这是针对AIR项目的,因为您可以使用AIR将任意文件写入用户的文件系统。如果不能使用AIR,恐怕你会被困在使用Local SharedObject(http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/SharedObject.html?filter_flex = 4.1&filter_flashplayer = 10.1&filter_air = 2#顶部)。使用SharedObject,你也对文件大小有限制。默认情况下你有100K,你可以从... – 2010-12-19 12:50:52

+1

...请求更多的用户,但他们可以选择拒绝访问更多的存储空间。由于你的代码表明它可能是一个瓦片地图XML,我想这个XML会变得非常快。所以要回顾一下,如果你想在客户端的机器上保存xml,你可以使用SharedObject或者AIR,否则你可能会考虑用服务器端语言(php/asp/jsp/etc)在服务器上保存xml。 ) – 2010-12-19 12:54:40

回答

1

您可以通过fileRef.save(data:*, defaultFileName:null)保存文件,其中data是要保存的数据对象,在您的案例中为mainXML.toString()。不幸的是,这将永远打开另一个文件对话框,并且没有办法解决它,因为它似乎是一个安全限制。你唯一能做的就是提供一个defaultFileName,所以用户不必手动输入。

相关问题