|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Aug 2010
Сообщений: 6
|
Как правильно применить Event.COMPLETE
Есть главный класс
package { import flash.display.Sprite; import flash.events.Event; import flash.text.*; import MyClass; public class Main extends Sprite { public var tf: TextField; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); tf = new TextField(); textf.text=" "; addChild(textf); var temp:MyClass = new MyClass(); tf.appendText(MyClass.vardata); } } } public function Download(){ var request:URLRequest = new URLRequest("http://www.domain.com/data.xml"); var loader:URLLoader = new URLLoader(); loader.addEventListener(Event.COMPLETE, completeHandler); try{ loader.load(request); } catch (error:Error){ trace("Error"); } } private function completeHandler(event:Event):void{ var dataXML:XML = XML(event.target.data); vardata = dataXML.toXMLString(); } |
|
|||||
Регистрация: Dec 2006
Адрес: Novosibirsk
Сообщений: 93
|
MyClass extends EventDispatcher:
private function completeHandler(event:Event):void{ var dataXML:XML = XML(event.target.data); vardata = dataXML.toXMLString(); dispatchEvent(new Event(Event.COMPLETE)); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); tf = new TextField(); textf.text=" "; addChild(textf); var temp:MyClass = new MyClass(); temp.addEventListener(Event.COMPLETE, completeHandler); } private function completeHandler(e:Event):void { tf.appendText((e.target as MyClass).vardata); } Последний раз редактировалось bebop; 24.08.2010 в 17:13. |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Избегайте использования замыканий.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Регистрация: Dec 2006
Адрес: Novosibirsk
Сообщений: 93
|
фуф, я исправился раньше чем меня исправили
|
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
У меня код правильнее =)
Если MyClass по каким-то причинам станет DisplayObject`ом и его ребёнок отправит событие Event.COMPLETE с бабблингом - то твой код даст RTE, если ребёнок не MyClass =) P.S. знаю, что проблема высосана из пальца =)
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Регистрация: Dec 2006
Адрес: Novosibirsk
Сообщений: 93
|
Еще бы сделать проверку, вдруг переменная уже сразу есть после инстанцирования.
P.S. Работать то все равно не охота |
|
|||||
Регистрация: Aug 2010
Сообщений: 6
|
Спасибо)
|
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Ну, ответ от сервера синхронно никак не придёт, поэтому проверка совсем лишняя. Или ты не о том?
P.S. В точку, вообще не хочется...
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Регистрация: Dec 2006
Адрес: Novosibirsk
Сообщений: 93
|
Тем же волшебным образом, каким объект превратится в ДисплейОбжекта, он может спрашивать данные и не у сервера
|
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
А, ты имеешь ввиду сделать медиатор чтобы можно было тестировать как с локальными данными, так и с серверными просто меняя флаг?
Я по setTimeout делаю, иммитирую ассинхроность загрузки =)
__________________
Тут мужик танцует и поёт про флэш |
Часовой пояс GMT +4, время: 12:41. |
|
« Предыдущая тема | Следующая тема » |
|
|