Я использую следующий код AS3 для записи и чтения данных из двух массивов в локальный файл, используя Animate CC 2019 в Windows 10 и параметры публикации AIR 30.0 для Desktop / Flash (.swf).Я использую два текстовых поля ввода, input1 и input2, чтобы добавить новые данные в массивы.
Когда я тестирую FLA, созданный файл данных имеет расширение .sol и помещается в путь к папке:
C: \ Users \ username \ AppData \ Roaming \ FLA filename \ Local Store # SharedObjects \ FLA filename.swf \
Если я опубликую и установлю программу с помощью установочного пакета .air, точныйк тому же файлу, находящемуся в том же пути к папке, также имеет доступ установленная версия программы.То же расположение используется, если я устанавливаю на другой компьютер под управлением Windows 7, поэтому расположение файла выглядит довольно согласованным.
Вопрос: Как заставить код сохранить в другом месте налокальный жесткий диск на винде?Например, в папке документов или создать новую папку на системном диске и сохранить там файл?Или, что еще лучше, предложить пользователю самому выбрать папку и файл?
Пожалуйста, подумайте, я ищу ответ, используя, если возможно, SharedObject , а не альтернативные методы, такие как URLLoader,Файл, FileStream, FileMode.Причина в том, что я могу хранить несколько массивов содержимого в файле, не имея дело с расположением данных в файле.Итак, я могу легко прочитать данные для каждого массива, как показано ниже.
Заранее спасибо
Этот код я использую для доступа к локальному файлу:
var datavariable:SharedObject = SharedObject.getLocal("filiename");
var data1:Array = new Array ();
var data2:Array = new Array ();
btn_read.addEventListener(MouseEvent.CLICK, readfromfile);
btn_write.addEventListener(MouseEvent.CLICK, writetofile);
btn_new.addEventListener(MouseEvent.CLICK, newentry);
//To add new data from input text boxes to the arrays:
function newentry(e:Event):void
{
data1.push(input1.text);
data2.push(input2.text);
}
//To write to the local file:
function readfromfile(e:Event):void
{
data1 = datavariable.data.d1
data2 = datavariable.data.d2
}
//To read from the local file:
function writetofile(e:Event):void
{
datavariable.data.d1 = data1
datavariable.data.d2 = data2
datavariable.flush();
}