Flash и XML: подгрузка внешних данных
Автор: Nikitar
Сайт: Rusforumz.com
Иногда необходимо подгружать внешние данные, например, текстовые. Естественное, первое, что приходит в голову - это подгрузка текста из текстовых файлов, но это не совсем верное решение проблемы. Когда вы подгружаете данные из текстового файла, необходимо придумывать множество переменных, затем обязательно их вместе соединять. Уже в течение долгого времени стандартом для подгрузки внешних данных является формат XML. Он очень легко редактируется (с помощью любого текстового редактора) и так же легко подгружается. Сегодня мы рассмотрим простейший пример использования внешних данных - будем делать случайный вывод цитаты из внешнего списка.
1. Начнём прежде всего с создания XML-документа. Для этого откройте текстовый редактор Блокнот (NotePad).
2. Любой xml-документ (который имеет свой язык, который однако мы не будем изучать) начинается со строки объявления, что это xml-документ, а также указывает версию и кодировку. Следующей строкой пишется какой-то общий тег и затем в него добавляются child'ы, которые у нас и содержат цитаты. Думаю, вы (если раньше не имели дело с XML-технологией) не особо сориентировались по вышесказанному, поэтому сразу к примерам.
Открываем текстовый документ и вводим туда следующее:
<?xml version="1.0" encoding="windows-1251"?>
<text>
<label quot="У Вас рука в брюке!" />
<label quot="Подберите ногу!" />
<label quot="Это я вам кому говорю!!!" />
<label quot="Поправьте головную пилотку!" />
<label quot="Часовых подбирать по размеру валенок." />
<label quot="Взвод наступает в сторону березового ивняка." />
<label quot="Cогните пальцы в локтях." />
<label quot="Дневальный должен стоять и подавать сигналы точного времени." />
<label quot="Вчера я прошелся под вашими кроватями, мне не понятно, как вы там живете." />
<label quot="Что вы здесь стоите? У вас что, нет языка постучаться?" />
</text>
Должно получиться вроде того, что на рисунке ниже.
3. А теперь всё это дело будем сохранять. Только сохранять будем нужным способом. Открываем в том же Блокноте, в котором писали, Файл - Сохранить как, чуть ниже есть выбор: Тип файла - Все файлы, а кодировку выбираем Юникод. Последнее нужно обязательно сделать, иначе flash не сможет отобразить кириллицу. Теперь в Имя файла пишем имя quotations.xml (вы не забыли, что мы цитаты будем делать?!). И сохраняем всё это дело в папку, где следующим пунктом создадим flash-ролик.
4. Ну что ж приступим теперь к созданию flash-ролика, для этого откроем что? Верно, Macromedia Flash 8. Открываем программу, задаём любые размеры, ставим fps равным 25. И сохраняем документ в ту же папку, где у нас находится файл quotations.xml
5. Выделяем первый кадр и начинаем загружать XML с помощью следующего кода. Буду писать по частям и объяснять что да как, пишем код в кадр.
stop();
quot = new XML();
quot.ignoreWhite = true;
quot.load("quotations.xml");
Первой строчкой мы останавливаем кадры, в случае, если у вас будет несколько кадров. Вторая строчка - создаём объект XML и называем его например quot. Третья строчка нужна для того, чтобы xml файл в том форматировании, в котором мы его сделали (всевозможные переносы между строчками), нормально прочитался флэшом. И, наконец, четвёртая строчка собственно загружает сам файл xml. Продолжаем дальше, туда же вставлять код.
function razbor_xml (xml:XML){
var array:Array = xml.firstChild.childNodes;
total=array.length-1;
for (var i:Number = 0; i < array.length; i++){
this["q"+String(i+1)] = array[i].attributes['quot'];
}
}
Пишем функцию разбора xml-файла, которая у нас так и называется razbor_xml. В кратце, что делает эта функция: она парсит подгруженный xml и создаёт из него массив данных, это мы делаем второй строчкой кода. Затем мы вводим переменную total, которая у нас считает количество цитат в xml-файле (1 строчка - 1 цитата). После этого делаем цикл for в ходе которого получаем множество переменных, каждая переменная состоит из буквы и цифры. Для каждой цитаты теперь есть своя переменная. То есть q1 - переменная, содержащая первую цитату, q2 - вторая цитата и так далее. Далее мы сможем оперировать уже этими переменными. Остальные строчки - закрываем цикл и функцию. И переходим к заключительной части кода.
quot.onLoad = function (success) {
razbor_xml (this);
one_quot=_root["q"+(random(total)+1)]
}
Последняя часть кода - это функция, которая исполняется, если xml-файл загружен успешно. Вторая строчка - мы вызываем функцию разбора xml-файла, которую описали выше, и третьей строчкой мы и делаем вывод случайной цитаты. Случайная цитата у нас выбирается с помощью функции random и присваивается переменной one_quot.
6. Теперь, когда весь код, подгружающий и разбирающий xml-файл, введён, займёмся отображением внешних данных. Для этого создадим на новом слое в этом же кадре динамическое текстовое поле. С параметрами, указанными на рисунке ниже. Главное, в поле var указать переменную one_quot.
7. Работа завершена, нажимаем ctrl+Enter и проверяем. Должно получиться что-то вроде того, что вы видите ниже.
И ещё пару рекомендаций:
ВНИМАНИЕ: Вы можете скачать исходник к данному уроку и самостоятельно разобраться что, куда и сколько раз. Исходники всех уроков выложены в Школе Флэша, которая располагается на портале RusForumz.com. Условия доступа в Школу Флэша