Flash и XML. Как прикрутить xml к флэшу.

XML - eXtensible Markup Language - расширяемый язык разметки. Благодаря технологии XML появилась возможность хранить структурированные наборы данных в простом универсальном формате с возможностью редактировать данные, не нанося вред файлу. Эта отличительна особенность и обуславливает широкое распространение XML.

Как выглядит XML? Ниже приведен пример:

<?xml version="1.0"?> 
<item>Добрый день!</item> <item>Как дела?</item> <item>Пока</item>

XML содержит в себе теги <item></item>, внутри которых есть какие тот данные. У нас это слова приветствия и прощание. При чтении XML можно прочитать только тэги item и достать их значения. По сути, этот файл - простейшая база данных со списком значений. XML может иметь и более сложную структуру.

XML и FLASH

Зачем нужна такая связка? Часто во флеше есть необходимость считать данные из внешнего источника. Это могут быть тексты для слайдера, ссылки для переходов, ссылки на изображения, или же база данных интерактивной карты. 

Принцип реализации такого чтения прост. На первом кадре флэша считываем файл. 

var myXML:XML = new XML();
myXML.ignoreWhite=true;
myXML.load("test.xml");

 На третьем кадре проверяем - загрузился ли наш файл полностью, если нет возвращаем на второй кадр. 

myXML.onLoad = function(success){
if (success){
gotoAndPlay(4);
} else {
gotoAndPlay(2)}

Если загрузился - идем дальше. На четвертом кадре парсим XML и вытягиваем из него данные. Для последующего использования прочитанных данных можно использовать два метода. Первый - считать все в массив (одномерный или двухмерный). Второй способ сразу создать объекты в контейнере и в объекты сразу загрузить значения переменных. Все зависит от того, что вы делаете во флеше. Например, данные интерактивной карты лучше сразу загонять в соответствующий экземпляр клипа.

Флеш очень хорошо дружит и с PHP. Благодаря чему, есть возможность редактировать наш XML прямо из флеш.

При чтении XML из флэша можно столкнуться с интересной особенностью. XML файл редактируется, меняется, а во флеше эти изменения не отображаются. Причина тому кэширование данных. Один раз прочитав XML с хоста, flash больше его не читает оттуда, а берет данные из кеша. Есть способ обойди эту проблему. Ниже приведен код: 

myXML.load("test.xml?" + Math.random(23462547));

Таким образом для флэша каждый раз это будет не один и тот же XML, а разные файлы: test.xml?4654, test.xml?1235. На сам адрес эти цифры не влияют, а для флеша это сигнал к тому, что надо взять данные с сайта, а не с кэша.

Добавить комментарий

Защитный код
Обновить