PDA

Просмотр полной версии : область видимости при загрузке данных извне


Багратион
03.09.2008, 17:55
Есть класс:
package {

import flash.display.Sprite;
import flash.events.*;
import flash.net.*;

public class getXML extends Sprite{

public var xml:XML;
public var loader:URLLoader;

public function getXML(){

loader = new URLLoader ();
loader.addEventListener (Event.COMPLETE, loadXML);
loader.load (new URLRequest ("test.xml"));

trace(xml); // Выводит NULL
}

public function loadXML (e:Event):void {
xml = new XML (loader.data);
trace(xml); // Выводит содержимое XML файла
}

}
}

собственно вопрос, как можно получить загруженные данные НЕ в обработчике события, а в любом другом методе ?

ramshteks
03.09.2008, 17:57
так же как и в обработчике, только вызывать их надо после события комплит

Багратион
03.09.2008, 18:02
так же как и в обработчике, только вызывать их надо после события комплит

А по-конкретнее можно ? Желательно с примерами :rolleyes:

Просто в дальнейшем, данные обрабатываются и потом должны быть переданы в другой класс, а я получается могу с этими данными работать только в пределах одного класса... вернее даже в пределах одного метода класса...

ramshteks
03.09.2008, 18:13
эм кто сказал тебе сию глупость у тя все есть чтоб осуществить задуманное! подумай еще.

ладна.

package {

import flash.display.Sprite;
import flash.events.*;
import flash.net.*;

public class XMLLoader extends Sprite{ классы называют с большой буквы и вроде как мне известно существительными а не глаголами

private var xml:XML;//инкапсуляция друг мой)
private var loader:URLLoader;

public function XMLLoader(){

loader = new URLLoader ();
loader.addEventListener (Event.COMPLETE, loadXML);
loader.load (new URLRequest ("test.xml"));

trace(xml); // Выводит NULL - естестна!
}

private function loadXML (e:Event):void {
xml = new XML (e.data);
//барабанная дробь!
doSomething(xml)
var someObject:SomeClass=new SomeObject(xml)
//или
var someObject2:SomeClass=new SomeClass2()
someObject2.setXmlData(xml);
trace(xml); // Выводит содержимое XML файла
}
private function doSomething(xmlData:XML):void{
trace(xmlData) //O_o
}

}
}