Загрузка текста и ссылок во флеш из xml

Опубликовано 18 2 2010 Начлаб

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

<?xml version="1.0" encoding="utf-8"?>  
<full>
   <slovo>
      <txt>Текст будет здесь</txt>
   </slovo>
   <ssylka>
      <knopka>http://flaboratory.ru</knopka>
   </ssylka>
   </full>

Мы видим, что присутствует группа тегов, так скажем, "вложенность". То есть в теги full сложены теги slovo и ssylka, а в них, в свою очередь, сложены txt и knopka. Поскольку пунктов у нас мало, можно было бы не делать, конечно, такую вложенность, но так видна будет суть того, что делаем, когда приступим к скриптам ролика. Теги могут быть любыми, их названия не важны.

Обратите внимание на самую верхнюю строчку. В ней прописана кодировка UTF-8. Так вот, этого недостаточно, чтобы файл был в этой кодировке. для этого нужно выполнить в простом Блокноте "Сохранить как..." и выбрать эту кодировку. В Notepad++ в меню есть непосредственно пункт "Кодировки", в котором нужно выполнить "Преобразовать в UTF-8 без BOM". Говорю это для того, чтобы не возникало вопроса "Не отображаются русские буквы из xml". Для решения этого вопроса еще выполняются действия, о них ниже.

Далее. Создаем ролик, в котором на верхнем слое пишем скрипт, а на слое ниже кладем Клип (Movie Clip) с тем, что у вас будет кликабельно, а также динамическое текстовое поле. Присваиваем им Имена (Instance Name). Пусть это будет txt для динамического текстового поля и knopka для кнопки.

Важно: в динамическом текстовом поле нужно выбрать шрифт, поддерживающий кириллицу, а кроме этого, следует воспользоваться кнопкой Внедрить (Embed) в Свойствах поля, и установить там кириллицу, цифры и пунктуацию.

Пишем скрипт в пером кадре слоя выше. Сперва подгружаем xml-файл:

xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("xml-file.xml");

Думаю, понятно, где указывается путь к xml-файлу относительно самого ролика. Вторая строчка сверху велит флеш не воспринимать пробелы в xml-файле. Далее готовим функцию обработки загруженного файла:

function loadXML(loaded) {
if (loaded) {
   
_root.slovo = this.firstChild.childNodes[0].childNodes[0].firstChild.nodeValue;
_root.ssylka = this.firstChild.childNodes[1].childNodes[0].firstChild.nodeValue;

Итак, здесь важный момент: каждый "уровень вложенности" в xml-файле - обозначается как childNodes, которые нумеруются начиная с нуля. То есть не 1,2,3 и т.д, а 0,1,2,3 и т.д. Соответственно у нас будет обрабатываться с таким скриптом, так скажем, строка между тегами, вписанная между другими двумя тегами.

Ну а теперь, мы, собственно, скажем ролику, что сделать с полученными данными:

_root.txt.text = _root.slovo;
}
_root.knopka.onRelease = function()
{
    getURL( _root.ssylka, "_blank" );
}
}

То есть выведем текст из xml-файла в указанное динамическое текстовое поле по Имени txt и придадим кликабельности кнопке по Имени knopka.
Думаю, достаточно понятно.

По традиции, код полностью:

xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("xml-file.xml");

function loadXML(loaded) {
if (loaded) {
   
_root.slovo = this.firstChild.childNodes[0].childNodes[0].firstChild.nodeValue;
_root.ssylka = this.firstChild.childNodes[1].childNodes[0].firstChild.nodeValue;

_root.txt.text = _root.slovo;
}
_root.knopka.onRelease = function()
{
    getURL( _root.ssylka, "_blank" );
}
}

При размещении на сайте, xml-файл нужно положить точно по тому адресу, который вы ему задали в ролике и не переименовывать. Также, следует учитывать политики безопасности сервера, особенно если вы грузите xml-файл с постороннего сервера. В коде вставки на странице можно, в таком случае прописать

<param name="allowScriptAccess" value="always" />

_______________________________________________________________

Если запись вам показалась полезной - в шапке на очень заметном месте кубик RSS. Подписывайтесь на здоровье :-)

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

4 комментариев to “Загрузка текста и ссылок во флеш из xml”

  1. dacascas says:

    Здорово! А можно как-нибудь считать текст во флеш из HTML кода страницы. Я ковырялся с flashvars, но получалось только ссылку во флеш передавать, а нужно ещё как то текст туда запулить и также на экран во флеше вывести. Если знаете – подскажите пожалуйста.

  2. jul.icio.us says:

    Спасибо, очень пригодилась статья! Просто и понятно!

  3. Максим says:

    Да статья отличная всё понятно! А как сделать так чтобы текст не залезал за границы поля для текста…ну т.е чтоб был перенос текста в текстовом поле?

  4. Максим says:

    извините тупанул надо растянуть было текстовое поле=)))

Оставить коммент