При закрытии подписчики были переданы в рассылку "RFpro.ru: Flash-анимация" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Здравствуйте, уважаемые читатели!
В этом выпуске (статье) рассмотрим некоторые возможности работы с
XML-файлами в языке ActionScript. В предыдущем выпуске мы использовали файл
такого формата для представления справочной информации об игре Ним. Замечу
мимоходом, что загрузка текстовых (в том числе XML), графических, и других
информационных структур позволяет уменьшить объем Флеш-ролика, передаваемого по
запросу пользователя. XML (eXtensible Markup Language )- это язык структурированного описания
информации. Первоначально этот язык разрабатывался как универсальное
гибкое средство хранения и передачи произвольных информационных структур.
Современная версия языка ActionScript содержит набор функций (методов),
предназначенных для исключительно удобной обработки файлов и структур данного
формата. Не представляют ни малейшей трудности такие стандартные операции, как
поиск и чтение содержимого любых узлов и атрибутов, загрузка файлов с сервера,
модификация содержимого. Все это благодаря тому, что плеер и среда
программирования поддерживают так называемую спецификацию ECMAScript for
XML. Структура XML-файла должна соответствовать определенным требованиям. Пример
правильно оформленного текста на языке XML - текст файла stoneRules.xml помощи
для игры Ним: <?xml
version="1.0" encoding="koi8-r"?> Как видите, корневым тегом в данном тексте является <rules>,
внутри три раздела, содержащиеся в зоне действия тегов <rule>.
Назначение каждого из этих тегов определяется атрибутом txt. Схема
документа представлена на рисунке: На рисунке изображено не три, а четыре раздела rule. Назначение
четвертого (пустого) тега с атрибутом txt= "Игра" будет рассмотрено
позднее, а сейчас рассмотрим проблему загрузки файла и способ ее решения. Загрузка xml-файла
Рассмотрим содержание класса: // Класс GetKbFromFile - загрузка текстового и xml-файла. Основа алгоритма загрузки: Модуль (родительский), которому нужен текст
соответствующего файла выполняет следующие действия:
После завершения загрузки вызывается метод handleComplete данного
класса. Этот метод является слушателем события "завершение
загрузки". Его функция предельно проста: отправить результат. Для этого он
вызывает метод answer родительского модуля Такая упрощенная схема взаимодействия модулей хорошо работает только при
условии достаточно хорошего качества связи клиента и сервера. Для повышения
надежности работы Вашей программы можно использовать таймер, и с его
помощью установить время ожидания. Остальное, полагаю, понятно: если время
ожидания истекло, методу answer главного модуля нужно передать,
например, такую строку (пустой тег): <Error/>. Главный модуль,
получив эту информацию, может вывести на экран сообщение о невозможности
продолжать работу с данным сервером. Обработка XML
В игровой программе Knim, рассмотренной в предыдущих выпусках, текст
xml-файла помещен в объект rules, Главного модуля. Заметьте, что в
результате проведенных экспериментов выяснилось, что помещать его в другой
модуль не следует. Ниже следует фрагмент программы, обрабатывающий содержимое этого объекта. var xx:uint = 5; Цикл for each(...) перебирает все элементы xml-объекта rules.
Получаемая информация используется так: значения атрибутов тегов txt помещаются
на кнопках. Посмотрите, насколько просто и изящно получается эта информация
(значение атрибута) в соответствии со спецификацией ECMAScript for XML!
Достаточно написать: что-то = element.@txt; Ставим перед именем атрибута
амперсанд - и дело сделано. Чтобы оценить красоту этого и других подобных
соглашений достаточно немного поработать со средствами разбора (парсерами)
xml-текстов в других программных системах, например, в РНР, или Delpi. Столь же просто получаем и текст элемента. Для этого можно использовать
разные (и очень простые) средства, но наиболее универсальным является
применяемый в данной программе метод text()); В нашем примере получаемые текстовые фрагменты помещаются в массив и
используются для демонстрации соответствующих разделов помощи. В заключение можно отметить, что возможности ActionScript по обработке
xml-текстов далеко не исчерпываются рассмотренными выше. Как и обычно, в данной
рассылке (серии статей) я описываю только то, что необходимо при решении
текущих задач. |
В избранное | ||