у меня аналогичная ситуация. Однако, если взять пример из приложения (ball_motion_04_click for trial.fla) то след остается. при этом заметил, что в моем проекте в поле "One item in library" виден кружок, в то время как в приложенном примере такого кружка нет. Вопрос знатокам, что не так? |
Движемся дальше
XML
Теперь мы приступим к компиляции окончательной версии нашего сайта. Если мы хотим сделать представление изображений динамическим, имеет смысл сохранять список рисунков отдельно от фильма Flash и загружать рисунки по мере надобности.
XML является самым удобным способом работы с параметрами изображений, такими как ширина, высота и заголовок. В разрабатываемом здесь приложении мы сконцентрируемся на загрузке данных XML для реализации наших целей. В "XML" более подробно рассказывается об использовании XML совместно с Flash MX; в ней вы также изучите некоторые из правил и решений, важных при работе с данными XML. Если вы впервые столкнулись с XML, вам будет лучше ознакомиться с несколькими первыми страницами "XML" перед изучением данной темы.
Можно очень просто описать список рисунков с помощью XML. Каждое изображение будет иметь свой собственный узел, содержащий атрибуты для своего имени файла и названия. Каждый узел будет выглядеть примерно так.
<picture file="denim001.jpg" name="whatever"/>
Приведенный выше код XML содержит информацию об имени файла изображения, его ширине и высоте, а также о назначенном изображению названии, если таковое имеется. Знак " означает начало узла, так же, как и в HTML, а его окончание обозначается знаком /". picture означает тип данного узла, аналогично тому, как b означает жирный шрифт в HTML.
Полный код XML будет состоять из нескольких таких элементов, объединенных в корневой элемент pictures. Введите этот текст в текстовый файл и сохраните его под именем pictures.xml.
<pictures> <picture file="denim001.jpg" name="whatever"/> <picture fiie="denim002.jpg" name="whatever"/> <picture file="denim003.jpg" name="whatever"/> <picture file="denim004.jpg" name="whatever"/> <picture file="denim005.jpg" name="whatever"/> <picture file="denim006.jpg" name="whatever"/> <picture file="denim007.jpg" name="whatever"/> <picture file="denim008.jpg" name="whatever"/> </pictures>
Вы только что создали простой файл XML. Если вы откроете файл pictures.xm l в браузере, вы увидите иерархическое описание информации.
Заметьте, что здесь есть значок +/-, на котором вы можете щелкать для открытия или закрытия структуры документа и вывода связанной информации. Сам по себе этот документ не представляет особого интереса. Данные XML становятся полезными лишь тогда, когда они обрабатываются каким-либо другим приложением.
Разберемся, как можно использовать эти данные во Flash.
Добавление данных XML во Flash
Структуру XML нужно импортировать во Flash и затем преобразовать информацию в данные, которые можно использовать, т.е. в массив объектов изображений.
- Создадим новый объект, в который будем загружать документ XML.
myXml = newXml(); myXml.load ("pictures.xml");
Это действие добавит документ XML, но после полной загрузки нам необходимо вызывать функцию.
- Для вызова функции по завершении загрузки документа XML мы можем использовать управляющий элемент onLoad объекта XML. Как и в случае с управляющими элементами событий фильма, мы можем определить функцию для ее вызова при возникновении данного события.
myXml = new Xml(); // call parseMe once xml has loaded myXml.onLoad = parseMe; myXml.load("pictures.xml"); function parseMe() { }
- Перед созданием функции parseMe нужно добавить одну или более строк кода для обеспечения игнорирования всех пустых мест в исходном файле XML (к примеру, возврат каретки или табуляция).
myXml = new Xml(); myXml.ignoreWhite = true; myXml.onLoad = parseMe; myXml.load("pictures.xml"); function parseMe() { }
- Функция parseMe должна раскрывать соответствующую информацию из каждого узла изображения и сохранять его, поэтому мы также создадим массив для хранения в нем данных.
pictureObjects = []; myXml = new Xml(); myXml.ignoreWhite = true; myXml.onLoad = parseMe; myXml.load("pictures.xml"); function parseMe() { }
- При вызове функции parseMe наша цель находится внутри объекта XML, поэтому, если мы используем this, то получим список всего документа. Введите этот код под имеющимся кодом.
function parseMe() { trace(this); }
Если вы сохраните фильм в той же папке, где сохранили pictures.xml, и запустите его, то увидите строку в окне Output, содержащую всю информацию внутри pictures.xml.
Однако в объекте XML имеется гораздо больше возможностей. При импортировании документа XML во Flash последний обрабатывает документ и создает из него структуру объекта, причем каждый узел ссылается на свои дочерние узлы, на братьев и на родителей, равно как и на атрибуты, которые могут иметь узлы.