我不能在功能上变量

时间:2010-06-02 18:14:37

标签: flash actionscript-3

我无法读取函数中的变量,我想在函数外部使用它,这是我的代码。

var contentLoader:URLLoader = new URLLoader();
contentLoader.load(new URLRequest("http://localhost/data.php"));

function onComplete(event:Event):void
{        

  var txtu:String = event.target.data;      

}
contentLoader.addEventListener(Event.COMPLETE, onComplete);

trace(txtu);

感谢。

3 个答案:

答案 0 :(得分:1)

基本上你有一个当前声明为函数本地的变量。你必须在函数之外声明变量,在其中定义了contentLoader变量,然后在函数中赋值。

答案 1 :(得分:1)

这里的问题是trace(txtu)contentLoader.addEventListener(Event.COMPLETE, onComplete)之后立即执行,这意味着它在URLLoader完成加载之前发生。因此,在这种情况下没有什么可追踪的,因为它还没有被加载。

尝试在onComplete()末尾调用另一个函数,这将确保外部数据在该点完全加载。

例如:

var contentLoader:URLLoader = new URLLoader();
contentLoader.load(new URLRequest("http://localhost/data.php"));

function onComplete(event:Event):void 
{
  var txtu:String = event.target.data;
  continueWithProgram();
} 

contentLoader.addEventListener(Event.COMPLETE, onComplete);

function continueWithProgram():void
{
  trace(txtu);
}

答案 2 :(得分:1)

你应该能够解决问题 将结果传递给这样的新方法:

var loaderResult: String;

var contentLoader:URLLoader = new URLLoader();
    contentLoader.addEventListener(Event.COMPLETE, onComplete);
    contentLoader.load(new URLRequest("http://localhost/data.php"));


// #option 1

function onComplete (event:Event): void {
    var txtu:String = event.target.data;
    continueWithProgram(txtu);
} 

function continueWithProgram (value:String): void {
  trace(txtu);
}

或使用事件处理程序之外的变量:

// #option 2

var loaderResult: String;

function onComplete (event:Event): void {
    loaderResult = event.target.data;
    continueWithProgram();
}

function continueWithProgram (): void {
  trace(loaderResult);
}
希望我能解释一下......;) 问候。