2011-04-30 51 views
1

我有以下代码:这个URLRequest或Loader有什么问题?

var myRequest:URLRequest = new URLRequest("http://localhost/example.com/scripts/get_peerID.php?peerID=" + myID.text); 
var myLoader:URLLoader = new URLLoader(); 
myLoader.dataFormat = "URLLoaderDataFormat.VARIABLES"; 
myLoader.load(myRequest); 
writeText(myLoader.data); 
var vars:URLVariables = new URLVariables(myLoader.data); 
writeText(vars.peerID); 

而且get_peerID.php?获取显示:

peerID=5a00d01af308bb4261198d92a89b939979e7ea260a3ead7d49a9b6bdd0492b72 

然而,writeText(vars.peerID)始终显示null。我似乎无法弄清楚为什么。有任何想法吗?

+0

检查,如果存在'myID.text' – Ibu 2011-04-30 23:07:20

+0

是的,它有什么值钱的东西。好主意,但。谢谢。 – Mike 2011-04-30 23:18:09

+0

您需要将侦听程序附加到加载程序,然后检查数据。她是异步的。 – Ethan 2011-04-30 23:31:19

回答

4

URLLoader类是异步的。引用文档:

URLLoader对象会下载所有 从URL中的数据使它 代码可用的应用程序之前。 它发送有关 下载进度的通知, 可以通过bytesLoaded 和bytesTotal属性以及 通过调度的事件监控该下载。

所以,这vars.peerID将调用对URLLoader.load方法后直接工作的唯一方法是,如果你的网络有零延迟和服务器端处理有0的执行时间。两者都极不可能。

相反,您应该听取complete事件。

var myRequest:URLRequest = new URLRequest("http://localhost/example.com/scripts/get_peerID.php?peerID=" + myID.text); 
var myLoader:URLLoader = new URLLoader(); 
myLoader.dataFormat = "URLLoaderDataFormat.VARIABLES"; 
myLoader.addEventListener(Event.COMPLETE,onComplete); 
myLoader.load(myRequest); 

然后在某处代码以后,这样的事:看

public function onComplete(event:Event):void{ 
writeText(myLoader.data); 
var vars:URLVariables = new URLVariables(myLoader.data); 
writeText(vars.peerID); 
}