这看起来应该很容易,但我无法理解。
我正在尝试一个非常简单的类,在创建时,将类和XML文件加载到类的属性中。我必须得到一个基本的概念,因为我可以在handleComplete函数中看到XML正常,但类属性_result仍为空。
我在这里错过了什么概念?
提前致谢。
public class MyClass
{
private var _result;
public function MyClass()
{
var url:String = 'myFile.xml';
var loader:URLLoader = new URLLoader();
loader.addEventListener( Event.COMPLETE, handleComplete );
loader.load( new URLRequest( url ) );
trace(_result); //returns nothing... didn't I just load it?
}
private function handleComplete( event:Event ) : void
{
try
{
var res:XML = new XML( event.target.data );
_result = res;
trace(_result); // this writes the myFile.xml to command line as I would expect.
}
catch ( e:TypeError )
{
// some error handling code
}
}
}
}
答案 0 :(得分:1)
第一个跟踪不打印的原因是因为对文件的请求不是同步的。这意味着它在后台运行,并且只有在完成时才会运行(如果文件非常大或网络连接不稳定可能需要一段时间),它会调用handleComplete函数。
在调用第一个trace()时,还没有调用handleComplete,因为文件还没有完成加载。