【发布时间】:2012-01-11 03:26:39
【问题描述】:
我有一个用于与 Zend_AMF 端点通信的 as3 类:
package test
{
import flash.events.Event;
import mx.rpc.AbstractOperation;
import mx.rpc.events.ResultEvent;
import mx.rpc.remoting.RemoteObject;
[Bindable]
[RemoteClass(alias="Request")]
public class Request
{
public var url:String = '';
//There are a lot more properties, but I have removed them for brevity
public function Request(url:String){
this.url = url;
}
public function send():void{
//Create the remoting object
var remotingObject:RemoteObject = new RemoteObject('test');
remotingObject.endpoint = "http://site.com/endpoint.php";
remotingObject.showBusyCursor = true;
//Send it
remotingObject.source = this.url;
var op:AbstractOperation = remotingObject.getOperation(null);
op.addEventListener(ResultEvent.RESULT, result);
op.send(this);
}
private function result(event:ResultEvent){
this.dispatchEvent(event);
}
}
}
要使用它,我执行以下操作:
var request:Request = new Request('someRemotingCommand');
request.addEventListener(ResultEvent.RESULT, catchEvent);
request.send();
public function catchEvent(event:ResultEvent):void{
var result:Response = event.result as Response; //Get result as my response object
trace(result.responseText);
}
所有这些都可以正常工作,但使用它需要大量工作。在我的 request 上调用 send() 时,我总是期待一个 Response 对象。
理想情况下,我希望能够调用 request.send() 并让它直接返回一个 Response 对象,而不必与侦听器打交道:
var result:Response = request.send();
这可能吗?如果是这样,我该怎么做?
【问题讨论】:
标签: actionscript-3 events event-handling