Завантаження та збереження текстових файлів у 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