2010-06-02 26 views
-2

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

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

功能的onComplete(事件:事件):无效 {

VAR txtu:字符串= event.target.data;

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

trace(txtu);

谢谢。

+0

请正确格式化您的代码。 – 2010-06-05 14:18:29

回答

1

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

+0

我也试过,但没有工作,这里是代码。 var txtu:String; var contentLoader:URLLoader = new URLLoader(); contentLoader.load(new URLRequest(“http://localhost/flash/playerdata.php”)); 功能的onComplete(事件:事件):无效 {\t \t \t \t txtu = event.target.data; \t \t } contentLoader.addEventListener(Event.COMPLETE,onComplete); trace(txtu); 如果你给我看一个例子itz很好,谢谢4重播。 – kaym 2010-06-02 18:42:56

+0

你确定数据正在被urlloader返回吗?你有没有试过追踪函数中的数据?另外,尝试像var loader一样将event.target强制转换为urlloader:URLLoader = URLLoader(event.target); – 2010-06-02 20:41:47

+0

是的,我做了,我跟踪功能和它的工作txtu,但是当我把它称为空功能外。 – kaym 2010-06-02 21:02:53

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); 
} 
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); 
} 

希望我能摆脱一些光;;) 问候。