Kindoro
18.12.2006, 16:35
Добрый всем день.
Встала потребность сделать 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 - буду счастлив безгранично.
Спасибо.
Встала потребность сделать 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 - буду счастлив безгранично.
Спасибо.