![]() |
О классах и методах и немного про URLLoader
Доброго времени суток.
Совсем уже отчаялся и решил-таки спросить. Задача сводится к стандартной загрузке XML документа. Итак дано: есть два класса loadData и createObj loadData - клас осуществляющий загрузку XML. Код привожу в кратце: Код AS3:
в принципе с задачей в плане кода я справился как мне кажется, но наткнулся на проблему которая уже имела место быть на форуме, но ответа я так и не нашел. А именно - когда я обращаюсь как угодно к loadData толи через создание экземпляра, толи через прямое обращение к функции - я просто не успеваю загрузить данные в переменную.Ну и формирование экземпляра createObj соответсвенно летит в тар-тарары. Как притормозить выполнение кода я так и не придумал. Так вот в чем вопрос. Такой вариант реализации вообще имеет право на существование? Если нет то какие есть варианты? Для меня критично именно продолжение кода уже с загруженными данными. Затормозить ожиданием функции тоже нельзя, т.к. конструктор свои дела закрывает и все значения у меня null. Ну всем кто уделит мне пару строк за ранее спасибо:) |
Я правильно понял что loadData ты используешь следующим образом
Код AS3:
createObj должен юзать loadData, только когда она ему просигналит :) (т.е. подписавшись на событие), а событие должно генерироваться loadData сразу после строчки loadXMLdata = XML(e.target.data); Если не правильно понял - напиши подробнее код. |
А что мешает после получения в классе loadData сгенерировать событие, подписаться на него там где это необходимо и после вызова события сгенерированного в loadData создать экзепляр createObj на основе данных в loadXMLdata? Все что для этого надо почитать в хелпе про класс EventDispatcher и его метод dispatchEvent()
|
Ну так я за то и агитирую :)
|
1)
Код AS3:
Можно прямо в createObj загружать xml, но технология там будет такая же: "событие окончания загрузки->всё остальное". 3) Можно перед вызовом конструктора createObj проверять, завершилась ли загрузка, и если нет не создавать createObj (если его создание не критично или пользователь может самостоятельно генерировать попытки его создания. например по нажатию на кнопку). 4) не уверен, что получится, но можно попробовать написать супер-корявый код: сделать бесконечный цикл, выходом из которого будет событие окончания загрузки. (допустим, в цикле можно проверять переменную, которая после окончания загрузки меняется на то значение, которое удовлетворяет выходу из бесконечного цикла). Но даже если это и заработает, тут есть подводные камни: защита флеша от зацикливания (по-умолчанию, там вроде 15 сек дается), ситуация, когда загрузка не происходит. Плюс ко всему, я бы постеснялся писать такое)) |
Idon, особо нет смысла мешать в кучу загрузку и обработку данных, бесконечный цикл, нажатие на кнопку не выход, это глупо, если будет долго загружаться, то юзер замучается жать кнопку, а цикл будет ограничиваться 15 секундами, да и зачем изобретать велосипед, когда элементарно можно воспользоваться пользовательскими событиями, они для того и предназначены
P.S.: в варианте 4 загрузка xml не произойдет никогда, т.к. до завершения цикла другой код выполняться не будет, в том числе и обработка загрузки xml |
4) не сработает, даже если не постесняешься, инициализация loadXMLdata будет происходить в том же потоке который ты циклишь
|
а вы перед XML не пробовали поставить new?
|
Цитата:
Код AS3:
Код AS3:
|
покажи весь код класса
|
| Часовой пояс GMT +4, время: 20:31. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.