![]() |
|
||||||||||
|
|||||
|
Посмотрите ниже написанный код и подскажите как его грамотно исправить.
Задача следующая: сделать клас который будет читать XML из указанного файла и передавать его содержимое через экземпляр класса. package rain.myxml{
import flash.display.*
import flash.events.*
import flash.net.*
import flash.utils.*
public class LoadXML extends Sprite {
public var _XMLRequest:String
private var _XMLdata:XML;
public function LoadXML() {
} //end public function LoadXML
public function getXMLdata():XML {
return _XMLdata
}
public function getXMLRequest():String {
return _XMLRequest
}
public function LoadFile(FileName:String):void {
_XMLRequest = FileName;
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.addEventListener(Event.COMPLETE, handleXML);
loader.load(new URLRequest (FileName));
}//end private function loadFile
private function handleXML(event:Event):void{
var GetXML:XML = new XML(event.target.data);
_XMLdata = GetXML;
trace(_XMLdata);
//_XMLdata = <example><item Element="пример" /></example>;
}//end private function handleComplete(event:Event)
} //end public class LoadXML
}// end package rain.myxml
var NewLoadXML:LoadXML = new LoadXML();
NewLoadXML.LoadFile("test.xml");
trace(NewLoadXML.getXMLRequest())
trace(NewLoadXML.getXMLdata());
я подозреваю что все это происходит по причине того что метод getXMLdata() обрабатывается быстрее чем loader.addEventListener(Event.COMPLETE, handleXML); но как это побороть??? заранее спасибо за ответ. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Правильно подозреваете. Лечится изменением логики приложения, в данном случае налицо ошибка проектирования. Загрузка чего-либо откуда-либо в ActionScript асинхронна, в отличие от некоторых других языков, например C#.
|
|
|||||
|
Цитата:
Ну например для данного кода назначить событие завершения загрузки файла а потом только получение XML конструкции в переменную. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Я бы на вашем месте такой класс бы не писал, толку от него никакого.
Свои события вы можете создавать и рассылать. |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:34. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|