如何在没有提示的情况下保存

时间:2018-12-26 12:01:20

标签: actionscript-3 filestream

我不久前发现了此代码段,并发现它在为IOS创建的应用程序中非常有用,我试图在AS3中保存和加载此文件,而无需询问保存/加载文件的位置并且没有设备提示。我正在使用AIR for IOS

请清楚一点,我只希望它保存并加载到预定位置(即app文件夹)。

我输入了以下代码。

stop();

// Timeline instances
var textField1:TextField;
var textField2:TextField;
var saveBtn:SimpleButton;
var loadBtn:SimpleButton;

saveBtn.addEventListener(MouseEvent.CLICK, saveClick);
function saveClick(e:MouseEvent):void {
    // Save the state of both text fields
    save(textField1.text, textField2.text, "SaveData.xml");
}

loadBtn.addEventListener(MouseEvent.CLICK, loadClick);
function loadClick(e:MouseEvent):void {
    load();
}

function save(text1:String, text2:String, SaveData:String):void {
    var xml:XML = <xml>
        <text1>{text1}</text1>
        <text2>{text2}</text2>
    </xml>;
    var file:FileReference = new FileReference();
    file.save(xml, SaveData);

}

function load():void {
    var file:FileReference = new FileReference();
    file.browse([new FileFilter("XML", "*.xml")]);
    file.addEventListener(Event.SELECT, loadSelect);
}

function loadSelect(e:Event):void {
    var file:FileReference = e.target as FileReference;
    file.addEventListener(Event.COMPLETE, loadComplete);
    file.load();
}

function loadComplete(e:Event):void {
    var file:FileReference = e.target as FileReference;
    var xml:XML = XML(file.data.readUTFBytes(file.data.bytesAvailable));

    // Assign the loaded XML text values back to the text fields
    textField1.text = xml.text1;
    textField2.text = xml.text2;
}

1 个答案:

答案 0 :(得分:0)

在没有提示的情况下保存文件,或者选择对话框,或者用户同意。如前所述,(我认为)不需要任何其他权限即可写入 File.applicationStorageDirectory 位置。

实施:

import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;

function saveFile(fileName:String, fileData:String):void
{
    var aFile:File = File.applicationStorageDirectory.resolvePath(fileName);
    var aStream:FileStream = new FileStream;

    aStream.open(aFile, FileMode.WRITE);
    aStream.writeUTFBytes(fileData);
    aStream.close();
}

用法:

var X:XML = <xml>
    <text1>{text1}</text1>
    <text2>{text2}</text2>
</xml>;

saveFile("mytest.xml", X.toXMLString());