![]() |
Класс XML не посылает событий, он только вызывает свой метод onLoad…
И мы его перенаправляем в наш класс. В AS3 это не требуется. |
Я пишу на AS2. А как сделать, чтобы я мог после обработки моего xml вызывать метод getName(), как в моем 10-м сообщении?
Конечно можно сделать цикл, который будет бесконечно крутиться, пока loaded не станет true или сделать задержку по таймеру (на то время примерно как загрузится xml), но тут один вариант глупее второго. |
ну дык варианты уже написали выше... То, что напмсал __etc пожалуй что более корректно, но нужно знать, как работает Delegate (очевидно =)
Вобщем, суть работы заключается в том, что он делает функцию одного класса так же функцией другого класса. Но в общем виде можно просто задать классу функцию и никак ее не определять в самом классе. А определить уже в ходе работы с элементом класса. Пример: Код:
class Xloader extends XML{Код:
var _xl:Xloader = new Xloader();Код:
class Xloader extends XML{Код:
var _xl:Xloader = new Xloader(); |
enepx, то, что тебе нужно, не получиться, ввиду асинхронности.
Нужно использовал событийную модель. Например, у меня есть класс AbstractXML и я работаю с ним так: Код:
… |
Лучше грузить данные в специальном классе который, для этого предназначен. Т.е. существует класс к примеру XMLLoader который может загружать в себя пачку XML из конфигурационного XML такого вида:
Код:
<settings>Код:
getXMLByName(name:String):XML;Код:
var mobilePhone:Device = new Device(_xmlLoader.getXMLByName("device1"));p.s. если интересует могу дать такой класс - сам писал давно достаточно, только там еще вагон и малегькая тележка классов и интерфейсов событийной модели... но если хочешь разобраться, то поделюсь с удовольствием p.s.2 _etc меня опередил :) |
Sneg, а твой getXMLByName что, сразу выдаст весь контент? А загружать его он когда будет?
з.Ы. Ты на полчаса опоздал :D |
Нет, это такой класс который на вход принимает:
Код:
init(url:String):Void; Код:
<settings>Код:
Код:
addListener(eventListener:IXMLLoaderListener):Boolean;Код:
addEventListener(listener:Object):Boolean; |
И нафига всем слушателям реализововать методы интерфейса, который к этим слушателям вообще толком не относится? А если тебе понадобиться реализовать в объекте другой интерфейс? А он у тебя уже реализует интерфейс XMLLoader… В общем, не суть важно, но твое решение, на мой взгляд, кривовато…
|
Объект может имплементировать несколько интерфейсов, через запятую: так что в этом не вижу проблемы. И как понять "вообще толком" не относится? Если он подписывается на события - он обязан слушать, вот пусть и слушает :)
|
Другое дело что, в основном слушателям в принципе плевать на всякие там onXMLLoaderProgress() им важно событие onXMLLoaderLoad(). В этом случае конечно приходится создавать пустые методы...
|
| Часовой пояс GMT +4, время: 01:25. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.