|
|
|||||
Регистрация: Sep 2010
Сообщений: 16
|
Спасибо. С массивами работает все как надо, только при первой загрузке картинки в поле display отображается undefined. Никак не могу понять в каком порядке исполняется код?? Привык что сверху вниз, а тут не поймешь.
Еще вопрос насчет кодировки в XML. Как заставить флэш нормально работать с кириллицей? У меня элемент name в кириллице записан. При выводе получаются квадратики. Где-то читал, что в XML-файле для кириллицы нужно указывать кодировку юникод. Пробовал - не помогает. Последний раз редактировалось regman; 12.01.2011 в 11:03. |
|
|||||
Модрон-ветеринар
|
I. Насчет undefined. Видимо вам надо увязать момент отображения первой картинки с моментом загрузки и разбора конфига. То есть отображать слайд и когда конфиг уже распарсен и когда картинка уже загрузилась.
Я обычно пишу прелоадер, который загружает конфиг и все картинки (отрисовываю их в битмапу и кладу в массив). Конечно, сперва идет загрузка конфига, чтобы получить пути для загрузки картинок, потом гружу их с помощью MovieClipLoader. Также этот прелоадер у меня обычно следит за загрузкой всей флешки. Когда готово всё, перехожу к кадру с основным содержанием флешки. II. Насчет кодировки. Вообще-то флеш работает с UTF-8. Общие рекомендации для нормальной работы с кириллицей: 1. Сохраните XML в UTF-8. Одной записи <?xml version="1.0" encoding="UTF-8"?> в начале файла будет недостаточно. Нужно именно сохранить файл в кодировке UTF-8. Т.е. выбрать utf-8 при сохранении из текстового редактора (я, например, использую Notepad++, хотя и обычный Notepad умеет это делать). 2. Для нормального отображения в текстовых полях кириллицы часто нужно бывает внедрить шрифт. Как внедрять шрифт, на форуме неоднократно говорилось. Чтобы проверить, что у вас за проблема, локализуйте ее. Например, потрейсите внутри парсера (в данном случае парсером я называю разбор данных внутри обработчика onLoad) получаемые из файла данные. Если трейс показывает нормальный кириллический текст, а в поле он не отображается, или отображается неправильно, то проблема уже не в работе с XML, а в отображении кириллицы в поле, внедрение шрифта должно помочь. Ни в коем случае не используйте назначение свойства System.useCodepage = true. Если уж совсем будут проблемы, стучитесь.
__________________
Идите первым! Последний раз редактировалось mooncar; 12.01.2011 в 11:27. |
|
|||||
Регистрация: Sep 2010
Сообщений: 16
|
Еще раз спасибо. Действительно, мой редактор плохо сохранял в кодировке UTF-8, хотя в опциях было выставлено. Проблема с кодировкой решена.
Насчет undefined - запихнул строку отображения первого описания в саму функцию loadXML. Только вот не совсем понимаю последовательности исполнения кода программы. Стояла эта строчка вне, то есть после функции loadXML - было undefined. Тоесть, получается что сначала инициализируются/объявляются все пользовательские функции в программе, а потом уж начинается исполнение кода сверху вниз?? Или как?? В других языках программирования все на порядок в этом плане понятнее. Описание первой картинки подтягивается из первого элемента массива, который заполняется в теле функции loadXML. Последний раз редактировалось regman; 12.01.2011 в 11:42. |
|
|||||
Модрон-ветеринар
|
regman, все просто! Вы поступили верно.
Дело в том, что код AS работает асинхронно. Флеш - это в первую очередь интернет-технология и нуждается в учете полной загрузки чего-либо, того же динамического контента. Код AS будет исполняться сам по себе мгновенно, строка за строкой, невзирая на то, что что-то не успело загрузиться, если не принять мер. А вдруг скорость соединения с файлом 1 байт /с ? Тогда данные о подписях будут получены очень не скоро. А код последовательно выполнится практически мгновенно. И что-то может окажется undefined. Поэтому и введены обработчики событий. То есть все, что нуждается в данных из конфига, нужно начинать выполнять изнутри onLoad. Необязательно пихать туда весь код. А просто например, создать функцию инициализации, которую и вызывать изнутри onLoad, выполняя ею начальные действия. Ведь они-то хоть и начальные, но уже требуют загруженных данных. Те же картинки нужно грузить с помощью MovieClipLoader (есть событие onLoadInit), данные из файлов - класс LoadVars (события onLoad или onData). Это нужно для того, чтобы знать, когда можно приступать к действиям над загруженным контентом или использовать конфигурационные данные. Так что и тут все понятно.
__________________
Идите первым! Последний раз редактировалось mooncar; 12.01.2011 в 12:00. |
|
|||||
Регистрация: Sep 2010
Сообщений: 16
|
Спасибо. Теперь все более прозрачно
Последний раз редактировалось regman; 13.01.2011 в 16:50. |
Часовой пояс GMT +4, время: 20:13. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|