AS3从事件侦听器函数返回变量 [英] AS3 Returning a variable from an event listener function
本文介绍了AS3从事件侦听器函数返回变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正试图将XML从事件完成返回到主函数,但无法弄清楚该怎么做.
I'm trying to return XML from an event complete back to the main function, but can't figure out how to do it.
这是我正在调用的函数:
Here's the functions I'm calling:
主文件:
public var mySendAndLoad:SendAndLoad = new SendAndLoad();
mySendAndLoad.sendData(url,variables)
mySendAndLoad类:
The mySendAndLoad class:
package
{
import flash.events.*;
import flash.net.*;
import flash.xml.XMLDocument;
public class SendAndLoad
{
public var xml:XML = new XML();
public var xmlList:XMLList;
public function SendAndLoad()
{
}
public function sendData(url:String, _vars:URLVariables):String
{
var request:URLRequest = new URLRequest(url);
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
request.data = _vars;
request.method = URLRequestMethod.POST;
loader.addEventListener(Event.COMPLETE, handleComplete);
loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
loader.load(request);
}
private function handleComplete(event:Event):String
{
var loader:URLLoader = URLLoader(event.target);
xml = XML(loader.data);
xmlList = xml.children();
return(xmlList[1]);
}
private function onIOError(event:IOErrorEvent):void
{
trace("Error loading URL.");
}
}
}
我想要发生的是让xmlList返回主文件.但是由于不是在我打电话给(sendData)的情况下,它不会被带回来.
What I want to happen is have the xmlList come back to the main file. But since it isn't in the event I called (sendData) it doesn't get brought back.
有什么想法吗?
推荐答案
package
{
import flash.events.*;
import flash.net.*;
import flash.xml.XMLDocument;
//THIS CLASS EXTENDS EVENTDISPATCHER SO IT CAN DISPATCH EVENTS
public class SendAndLoad extends EventDispatcher
{
public var xml:XML = new XML();
public var xmlList:XMLList;
public function SendAndLoad()
{
super(null);
}
public function sendData(url:String, _vars:URLVariables):void
{
var request:URLRequest = new URLRequest(url);
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
request.data = _vars;
request.method = URLRequestMethod.POST;
loader.addEventListener(Event.COMPLETE, handleComplete);
loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
loader.load(request);
}
private function handleComplete(event:Event):void
{
var loader:URLLoader = URLLoader(event.target);
xml = XML(loader.data);
xmlList = xml.children();
//NEW CODE
var evt:Event=new Event(Event.COMPLETE);
dispatchEvent(evt);
//return(xmlList[1]);
}
private function onIOError(event:IOErrorEvent):void
{
trace("Error loading URL.");
}
}
}
并在主文件中
public var mySendAndLoad:SendAndLoad = new SendAndLoad();
mySendAndLoad.addEventListener(Event.COMPLETE, xmlLoadCompleted);
mySendAndLoad.sendData(url,variables)
private function xmlLoadCompleted(e:Event):void {
var childToUse:XML=mySendAndLoad.xmlList[1];
//whatever else you want to do
}
这篇关于AS3从事件侦听器函数返回变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文