![]() |
|
||||||||||
|
|||||
|
Регистрация: Dec 2006
Сообщений: 16
|
Добрый всем день.
Встала потребность сделать CD каталог. Все данные храняться в файле XML. Там 3 уровня тегов. Раздел -> Наименования -> Описание Собственно все просто: слева менюшка Tree с Разделами и Наименованиями, Справа текстовое поле с описанием. Я себе представлял процесс работы приложения таким: 1. Загрузить XML файл в объект mysourceXML 2. Создать XML объект mymenuXML для меню, на основе mysourceXML(выкинуть ненужные элементы и оставить только Разделы и Наименования) 3. Присвоить объекту Tree mymenuXML пока хватит. Все скрипты уже написаны - загвоздка в первом этапе. Есть .mxml файл (главный), есть .as файл с функциями, в котором написаны все функции к которым я обращаюсь из mxml. Функция загрузки выглядит так: public static function loadXML(src:String) { var myXML:XML = new XML();var XML_URL:String = src; var myXMLURL:URLRequest = new URLRequest(XML_URL); var myLoader:URLLoader = new URLLoader(myXMLURL); myLoader.addEventListener("complete", xmlLoaded); function xmlLoaded():void { myXML = XML(myLoader.data);}trace("Data loaded.");} Сам ничего не придумывал - все из Help. Проблема в том, что загрузка .xml файла происходит с задержкой, поэтому надо использовать addEventListener. Так что если в конце функции поставить return(myXML);, чтобы вернуть то, что загрузили, то возвращает 0.....на момент выполнения return myXML еще пуст. Эта функция выполняется при старте приложения. Все что потом - рабоатет в реалтайме, но вот ее нужно подождать. Вопрос - как так сделать, чтобы 2 и 3 шаги подождали выполнения этой функции. Можно сделать тупо вызов функции создания меню из функции xmlLoaded():, но это неудобно - не могу из .as файла назначить компоненту меню Tree dataProvider.....оттуда его не видно, так как он находиться в mxml файле..... Если у кого есть мысли как его достать оттуда или как заставить все приложение ждать выполнения функции xmlLoaded - буду счастлив безгранично. Спасибо. |
|
|||||
|
4AM Games
|
на старте, заблокируй все контролы (myButton.enabled = false и так ко всему), и когда загрузится, разблокируй. и вызывай методы инициализаторы.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
|
|||||
|
Регистрация: Dec 2006
Сообщений: 16
|
Цитата:
Какие контролы? У меня запускаеться приложение, потом нужно сделать последовательно три шага, описанные выше......в моем случае чего блокировать-то? Не мог бы ты по-подробнее опсиать что нужно блокировать, и каким методом.....? Спасибо. |
|
|||||
|
4AM Games
|
Tree - контрол
создать Tree, заблокировать его (я написал как), и на событие загрузки, отпарсить хмл и присвоить его Tree, в чем проблема?
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
|
|||||
|
Регистрация: Dec 2006
Сообщений: 16
|
Цитата:
Вся эта телега в .as файле. там свой Package и свой Класс. До Tree мне оттуда доступ никак не получить. Иными словами по логике вещей надо сделать так: 1. написать 2 функции: 1. загрузка XML - loadxml("путь к файлу"):XML;2. поочереди вызвать mysouceXML:XML = loadxml("путь к файлу"); потом mymenuXML:XML = getmenu(mysouceXML):XML; 3. назначить mymenuXML объекту Tree. Вся засада в том, что так не пойдет.....обработчик не ждет загрузки XML, а идет дальше.....и передает в функцию getmenu() пустой ьнsourceXML. Вот это и есть проблема. К объекту Tree у меня вопросов нет. ![]() Последний раз редактировалось Kindoro; 19.12.2006 в 01:18. |
|
|||||
|
4AM Games
|
как понимать никак не получить, передачу ссылок кто то запретил?
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
|
|||||
|
Регистрация: Dec 2006
Сообщений: 16
|
Все. Проблема решена.
Доступ к Tree получен после добавления строчки import mx.controls.Tree; Все работает в такой цепи: eventListenera xmlLoaded() вызываем функцию getmenuXML(); в конце которой назначаем созданный menuXML к myTree.dataProvider ![]() P.S.: кстати господа из Адоби в хелпе лишь в одном далеком месте упомянули о том, что нужно такие строчки добавлять......а в разделе Flex 2 Developer's Guide > Using Flex Programming Languages > Developing Applications in MXML > Developing applications > Using the id property with MXML tags об этом ни слоа ![]() Но в любом случае, ставим им 5 за Flex. Рульная вещь. Давно в ней назрела необходимость. ![]() Последний раз редактировалось Kindoro; 19.12.2006 в 02:34. |
|
|||||
|
4AM Games
|
господа из адоб не расчитывали на крутых перцев которые читают документацию через страницу, они привыкли к людям, которые читают ее полностью
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:25. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|