Загрузка текста и ссылок во флеш из xml
Поскольку этот вопрос поднимают во комментариях (я такие комментарии, конечно, удаляю, поскольку они не относятся к той записи, к которой были проставлены), я объясню эту простую вещь.
Для работы с флеш + xml нам понадобится естественно xml-файл. Создать его можно даже в обычном блокноте, но я рекомендовал бы . Поскольку мы загружать в ролик будем текст и ссылку, их и пропишем в xml. Выглядеть простейший такой файл будет так:
<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.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("xml-file.xml");
Думаю, понятно, где указывается путь к xml-файлу относительно самого ролика. Вторая строчка сверху велит флеш не воспринимать пробелы в xml-файле. Далее готовим функцию обработки загруженного файла:
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.knopka.onRelease = function()
{
getURL( _root.ssylka, "_blank" );
}
}
То есть выведем текст из xml-файла в указанное динамическое текстовое поле по Имени txt и придадим кликабельности кнопке по Имени knopka.
Думаю, достаточно понятно.
По традиции, код полностью:
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-файл с постороннего сервера. В коде вставки на странице можно, в таком случае прописать
_______________________________________________________________
Если запись вам показалась полезной - в шапке на очень заметном месте кубик RSS. Подписывайтесь на здоровье :-)



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