在操作脚本3中没有用户提示对话框保存到XML文件?

时间:2011-03-12 20:02:17

标签: xml flash actionscript-3 file

如何在Action Script 3中没有用户提示对话框的情况下将数据保存到XML文件中?

我正在编写一个在客户端PC上运行的简单应用程序(使用adobe flash),并将用户状态数据保存在应用程序的同一目录中的XML文件中。当我使用FileReference时,它会显示用于保存文件的用户对话框。是否有任何类只将XML数据直接保存到XML文件中?

我认为只编写XML(文本平面)数据不会产生任何安全问题? : -

3 个答案:

答案 0 :(得分:3)

我很惊讶没人发布过这个。使用URLLoader将xml文件加载到内存中,确保dataFormat是URLLoaderDataFormat.TEXT,然后使用文件流将其写入文件。

工作代码发布在

下面

希望有所帮助

private function loadConfigFromServer():void{
    var request:URLRequest = new URLRequest(serverConfigXmlLocation);
    configLoader = new URLLoader();

    configLoader.addEventListener(Event.COMPLETE, configLoadCompleteHandler);
            configLoader.addEventListener(IOErrorEvent.IO_ERROR, configLoadIOErrorEventHandler);
    configLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, configLoadSecurityErrorEventHandler);

    configLoader.dataFormat = URLLoaderDataFormat.TEXT;
    configLoader.load(request);

}


 private function configLoadCompleteHandler(event:Event):void{
     configLoader.removeEventListener(Event.COMPLETE, configLoadCompleteHandler);
     configLoader.removeEventListener(IOErrorEvent.IO_ERROR, configLoadIOErrorEventHandler);
     configLoader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR,   configLoadSecurityErrorEventHandler);
     trace("config download complete");
     var fs:FileStream = new FileStream();
     try{
         fs.open(new File(localConfigXmlLocation), FileMode.WRITE);
         fs.writeMultiByte(configLoader.data, "unicode");
     }catch(error:IOError){
         trace("IOError saving config xml");
     }catch(error:SecurityError){
         trace("SecurityError saving config xml");
     }finally{
         fs.close();
         parseLocalConfig();
     }
}

答案 1 :(得分:2)

在没有对话框出现的情况下保存数据的唯一真正方法是通过SharedObject类。如果你不需要在外部编辑XML,它应该没问题,你可以保存它。

如果你的数据超过100KB(我认为),那么SharedObject会建立一个对话框,所以如果你的XML大于此值,请使用ByteArray对其进行压缩。

压缩中:

var ba:ByteArray = new ByteArray;
ba.writeUTFBytes( myXML );
ba.compress();

解压缩:

try
{
    ba.uncompress();
}
catch ( e:Error )
{
    trace( "The ByteArray wasn't compressed!" );
}

// set our xml data
myXML = XML( ba );

答案 2 :(得分:1)

可能重复:Saving XML file in AS3 is possible

使用描述的divillysausages之类的共享对象,您可以将数组,XML数据或其他变量保存到共享对象以便以后检索它。您只是将这些数据保存到用户计算机,因此它不能再在本地机器上的任何地方使用。简短的回答,没有服务器端语言与之通信,如果是浏览器应用程序或投影仪,则无法将数据保存到实际的XML文件中。