В этом уроке я покажу как с помощью AS3 читать данные из простого тестового файла. Зачем это нужно? В текстовом файле могут хранится данные, параметры, настройки, заменив которые можно заставить иначе работать флешку без её перекомпиляции. Например, можно хранить содержание интернет страниц флеш сайта или пункты меню, можно хранить структуру игровых уровней или рекорды. Флеш не позволяет напрямую писать в файлы, можно только читать из них. Процесс загрузки состоит из трёх этапов: создание загрузчика и строки запроса, загрузка данных в загрузчик, чтение данных из загрузчика после их полной загрузки. Текстовый файл должен быть в формате 8-ми битного юникода (UTF-8), флеш понимает только юникод, поэтому будьте внимательны, особенно с русским текстом. Например виндусовский блокнот или вордпад по умолчанию сохраняют текст в формате ANSI, при сохранении выбирайте нужный формат. Создаем переменную для хранения данных
var myText:String;
Создаем новый загрузчик
var myLoader:URLLoader = new URLLoader();
Добавляем к загрузчику слушателя события complete - посылается в поток событий когда данные полностью загрузятся
myLoader.addEventListener(Event.COMPLETE, allLoad);
Добавляем к загрузчику слушателя событий - ошибка
myLoader.addEventListener(IOErrorEvent.IO_ERROR,ehError);
Функция обработчик событий ошибки
function ehError(e:IOErrorEvent):void {
trace("При чтении файла произошла ошибка:\n"+e);
}
Функция обработчик события complete
function allLoad(event:Event):void {
var tempLoader:URLLoader=URLLoader(event.target);
myText=new String(tempLoader.data);
trace(myText ); //Можем вывести данные в консоль
}
Инициализируем переменную строки запроса
var request:URLRequest=new URLRequest("myTextFile.txt");
Загружаем данные из файла
myLoader.load(request);
Если не произошло ошибки, то в переменной myText хранятся данные считанные из файла. Если в консоль выводится вместо русского текста загогулины, значит вы сохранили текстовый файл не в формате UTF-8. Если данные не загружаются и выводится ошибка, проверьте правильно-ли вы указали имя файла в переменной строки запроса и есть-ли этот текстовый файл в папке с скомпилированной флешкой.
Хорошо текст загрузили, а как же загружать переменные?
Для загрузки переменных из текста необходимо соответствующим образом его оформить. Переменные должны быть записаны парами имя=значение, пары разделяются знаком &. То есть, точно также как они передаются в интернет запросах методом GET.
Создадим текстовый файл и напишем в нём например так - Имя=Владимир&Счет=99. Теперь перепишем функцию обработчик события complete:
function allLoad(event:Event):void {
var tempLoader:URLLoader=URLLoader(event.target);
myText=new String(tempLoader.data);
trace(myText);
var myVars:URLVariables = new URLVariables(tempLoader.data);
trace("Имя: " + myVars.Имя);
trace("Счет: " + myVars.Счет);
}
Здесь мы добавили три новых строчки: создали новую переменную типа URLVariables и заполнили её переменными из загруженных данных, и вывели переменные имя и счет. Флеш использует для разбора скриптов также формат текста UTF-8, поэтому можно использовать русские имена. Следите чтобы имена переменных полностью совпадали иначе они будут содержать undefined, т.е. не будут проинициализированы.
В следующем уроке я опишу загрузку данных из текстового файла оформленного по XML правилам. XML, по сравнению просто с текстом, дает больше возможностей по хранимым данным и дает возможность проверки их целостности, т.е. более надежен.