Сайт журнала WebDix
Flash и XML: подгрузка внешних данных
Колонка редактора Веб-дизайн Раскрутка Раскрутка Программирование Уроки Photoshop Уроки Flash Журнал Софт Юмор

Menu:


Ageofcomp.ru - здесь всегда весело!

RusForumz.ru
Огромное количество статей по веб-дизайну, раскрутке, анимации, оптимизации и программированию. Всем читать!
Подробнее

Ageofcomp.ru
Вторая, неофициальная часть форума RusForumz.com. Если хочется отдохнуть и развлечься, приходи на этот форум. Зажжём!
Подробнее

Ageofcomp.info
Блог одного из авторов журнала - Exact'a. Ежедневное обновление приучит вас начинать день с блога Ageofcomp.info
Подробнее


БЫСТРЫЙ ПЕРЕХОД

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>

Должно получиться вроде того, что на рисунке ниже.

XML-файл

3. А теперь всё это дело будем сохранять. Только сохранять будем нужным способом. Открываем в том же Блокноте, в котором писали, Файл - Сохранить как, чуть ниже есть выбор: Тип файла - Все файлы, а кодировку выбираем Юникод. Последнее нужно обязательно сделать, иначе flash не сможет отобразить кириллицу. Теперь в Имя файла пишем имя quotations.xml (вы не забыли, что мы цитаты будем делать?!). И сохраняем всё это дело в папку, где следующим пунктом создадим flash-ролик.

Сохранение XML-файла

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 и проверяем. Должно получиться что-то вроде того, что вы видите ниже.





И ещё пару рекомендаций:

  • Не забывайте загружать xml-файл на сервер вместе с swf, без xml-файла ничего работать не будет.
  • Вы можете добавлять сколько угодно количество строчек в xml-файл, но также помните, что чем больше будет весить xml-файл, тем дольше он будет загружаться в ролик.
  • Не обязательно держать ролик и xml файл вместе, в одной папке. Нет, вы можете поместить его туда, куда вы хотите, но не забудьте правильно прописать путь к файлу в fla-файле. Также нельзя размещать xml-файл на другом домене (вернее можно, но для этого нужны специальные разрешения, как их сделать мы рассмотрим в следующий раз)



    ВНИМАНИЕ: Вы можете скачать исходник к данному уроку и самостоятельно разобраться что, куда и сколько раз. Исходники всех уроков выложены в Школе Флэша, которая располагается на портале RusForumz.com. Условия доступа в Школу Флэша

    СКАЧАТЬ ИСХОДНИК