我正在尝试在类中使用eventlistener,但我无法使其正常工作!
该类用于处理HTTPRequest,因此我使用的是ResultEvent.RESULT。任何人都可以帮助我吗?
谢谢!
public class GetXML
{
public var content:Object;
public var url:String;
public var database:HTTPService;
public function GetXML()
{
this.content = content;
this.url = url;
this.database = database;
}
public function setURL(url:String):void {
this.url = url;
}
public function getContent():void {
this.database = new HTTPService();
this.database.url = this.url;
this.database.addEventListener(ResultEvent.RESULT, foo);
this.database.send();
}
public function foo(event:ResultEvent):void {
Alert.show("foo");
}
}
答案 0 :(得分:0)
this.database.addEventListener(ResultEvent.RESULT, foo);
我认为这个示例代码是在API完成之前发布的。
根据documentation,HTTPService类调度两个或五个事件(取决于包 - 当然,Adobe正在使用的新文档系统似乎不太完美)。
无论如何,addEventListener()方法将第一个参数作为表示要侦听的事件类型的字符串。在您的代码中,您使用“ResultEvent.RESULT”。根据{{3}},ResultEvent类没有这样的常量。 (另外,你没有导入ResultEvent类,但是我使用的是Flash,而不是Flex,所以我不知道ResultEvent类是否是核心)
您可以尝试使用实际字符串作为测试:
this.database.addEventListener('result', fooResult);
this.database.addEventListener('fault', fooFault);
this.database.addEventListener('invoke', fooInvoke);
是的,我也更喜欢使用常量,但让我们先看看它是否有效。 :)
答案 1 :(得分:0)
实际上,根据documentation,ResultEvent类有这样的常量。
对我来说:
this.database.addEventListener(ResultEvent.RESULT, foo);
正常工作并显示警告框。我试试:
this.database.addEventListener(Event.ACTIVATE, handleActivate);
this.database.addEventListener(Event.DEACTIVATE, handleDeactivate);
this.database.addEventListener(FaultEvent.FAULT, handleFault);
this.database.addEventListener(InvokeEvent.INVOKE, handleInvoke);
this.database.addEventListener(ResultEvent.RESULT, handleResult);
并检查每个人的警报或使用Charles / HttpFox检查我们是否有任何请求或回复。