Как сохранить без запроса - PullRequest
0 голосов
/ 26 декабря 2018

Я нашел этот фрагмент кода некоторое время назад и нашел его полезным в приложении, которое я создаю для IOS, и я пытаюсь сохранить и загрузить этот файл в AS3 без запроса местоположения файла сохранения / загрузки и без устройства.побуждая.Я использую AIR для IOS

Просто чтобы прояснить ситуацию, я просто хочу сохранить его и загрузить в заранее определенное место (т. Е. В папку приложения).

Я набрал код ниже.

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 голосов
/ 26 декабря 2018

Сохранение файла без запроса или выбора диалогового окна или согласия пользователя.Как я упоминал ранее, никаких дополнительных разрешений (я думаю) не требуется для записи в File.applicationStorageDirectory location.

Реализация:

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());
...