我有以下代码:
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 :(得分:4)
URLLoader类是异步的。引用文档:
URLLoader对象全部下载 在制作之前来自URL的数据 可用于应用程序中的代码。 它发出有关的通知 下载的进度,你 可以通过bytesLoaded进行监控 和bytesTotal属性,以及 通过派遣活动。
因此,调用URLLoader.load方法后vars.peerID直接工作的唯一方法是,如果您的网络没有零延迟,并且您的服务器端处理的执行时间为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);
}