Завантаження та збереження текстових файлів у ActionScript 3

Мда. Я зовсім не збирався писати про вказану в заголовку тему, але. чомусь багато хто заходить на цей блог саме за цим запитом (?!). Значить, треба написати. Погано обманювати очікування людей :-)

Отже, перед нами стоять дві задачі:завантаження тазбереження текстового файлу в локальній файловій системі засобами мовиActionScript 3.0 (для ActionScript 2.0 дані завдання неактуальні. в силу їх нездійсненності). Давайте послідовно розглянемо ці завдання:

1.)Завантаження текстового файлу у флеш-ролик із комп'ютера користувача засобами AS 3.0.

Як це відбувається?

Щоб щось (текстовий файл, зображення) завантажити з комп'ютера користувача у флеш-ролик, необхідна воля користувача. Без активності користувача завантаження неможливе (що цілком виправдане міркуваннями безпеки). Користувач натискає кнопку мишки або клавішу клавіатури та з'являється діалогове вікно:

збереження

Через це діалогове вікно користувач вибирає той файл, який треба завантажити, а потім підтверджує свій вибір. Файл завантажується.

На мові ActionScript 3.0 це виглядає приблизно так.

Код ActionScript 3.0:

/* створюємо об'єкт класу FileReference саме клас FileReference забезпечує завантаження/збереження файлів у AS 3.0 */ var fileReferenceLoad:FileReference = new FileReference(); /* відстежуємо момент, коли користувач вибирає файл для завантаження */fileReferenceLoad.addEventListener(Event.SELECT, onFileSelect); /* кнопка для завантаження файлів */ btn.addEventListener(MouseEvent.CLICK, onClick); /* функція, що викликається при натисканні на кнопці завантаження */ function onClick(event:MouseEvent):vo >

btn - це кнопка у флеш-ролику, яку треба натиснути користувачеві, щоброзпочати завантаження текстового файлу;

txtField – це динамічне текстове поле, в яке завантажується текст із текстового файлу.

2.)Збереження текстового файлу на комп'ютері користувача засобами AS 3.0.

Тут буде простіше.

Код ActionScript 3.0:

/* створюємо об'єкт FileReference */ var fileReferenceSave:FileReference = new FileReference(); /* кнопка для збереження файлів */ btn.addEventListener(MouseEvent.CLICK, onClick); /* функція, що викликається при натисканні на кнопці збереження */ function onClick(event:MouseEvent):vo ); >

Хоча, звичайно, наведений мною код – це максимально спрощений випадок. Адже ми навіть не відстежуємо помилки (втім, не так часто й виникають) і не використовуємо багато інших корисних властивостей та подій FileReference. Але цей код цілком працездатний.

Код ActionScript 3.0:

/* ============================== імпорт класів ================ ============== */ /* класи, які нам знадобляться для завантаження/збереження даних */ import flash.net.FileReference; import flash.utils.ByteArray; import flash.events.*; /* імпорт компонентів */ import sliz.miniui.Input; import sliz.miniui.Button; /* ============================== текстове поле ================ ============== */ var txtField:Input = new Input("","",this,null,50,50,300,300,true); /* ============================== завантаження даних ================ ============== */ /* створюємо об'єкт класу FileReference саме клас FileReference забезпечує завантаження/збереження файлів у AS 3.0 */ var fileReferenceLoad:FileReference = new FileReference(); /* відстежуємо момент, коли користувач вибирає файл для завантаження */fileReferenceLoad.addEventListener(Event.SELECT, onFileSelect); /* кнопка "load" */ new Button(" - load -",400,100,this,load_file); /* функція, що викликається при натисканні на кнопці "load" */ function load_file(event:Event):vo );

Звичайно, це не Notepad++, але працює :-)

Завантажити вихідні дані до цього посту можна тут (під Adobe Flash CS5.5).

[!] Flash коректно працює лише з текстовими файлами, що мають кодуванняutf-8.

[!] Є обмеження на розмір даних, що завантажуються у флеш-ролик.

[!] Для коректної роботи наведених у цій статті прикладів вам знадобитьсяFlash Player 10 і вище.

Дата завантаження: 2012-02-05

Рейтинг посту: 25