我可以使用AsyncToken监听组件之间的警报按钮单击吗?基本上,我希望有一个方法来打开一个带有按钮的警报,并让它返回一个AsyncToken,这样调用该方法的其他组件就可以监听按钮单击。
示例:
var token:AsyncToken=methodThatOpensAlert();
token.addResponder(new mx.rpc.Responder(buttonClick));有什么方法可以做到这一点?谢谢。
发布于 2012-03-25 03:15:41
你也许可以使用AsyncToken来实现这一点,但你也可以只注册你从弹出窗口中发送的自定义事件,这是一种更简洁的方法。实际上,你有两个相对干净的选择,我能想到。1对于弹出窗口中的不同按钮单击,创建弹出窗口的一个实例并添加侦听器,然后调用PopUpManager.addPopUp;或者执行PopUpManager.createPopUp并保留对返回的显示对象(它创建的弹出窗口的实例)的引用,然后添加侦听器。2您在弹出窗口中创建了两个类型为函数的属性,将它们用作回调,因此在创建弹出窗口时设置okClickedFunction和cancelClickedFunction (或任何按钮),然后在弹出窗口中将cilck处理程序放在按钮上,检查是否设置了适当的回调函数,如果设置了,则调用它,如下所示
if(okClickedFunction)
okClickedFunction();如果您有特定的需求,让我知道您认为必须使用AsyncToken,但从文档中可以看出,它似乎严格意义上是要与其他RPC方法一起使用,而且很多属性都是只读的。
编辑:
SomeUtilClass.as
private static function methodThatOpensAlert():CustomAlert
{
return PopUpManager.createPopUp(Application.application, CustomAlert) as CustomAlert;
}CustomAlert.as
[Event(type="flash.events.Event", name="button1Clicked")]
[Event(type="flash.events.Event", name="button2Clicked")]
private function button1Clicked_handler(event:MouseEvent):void
{
dispatchEvent(new Event("button1Clicked", true));
}
private function button2Clicked_handler(event:MouseEvent):void
{
dispatchEvent(new Event("button2Clicked", true));
}ThingThatUsesAlert
var ca:CustomAlert = SomeUtilClass.methodThatOpensAlert();
ca.addEventListener("button1Clicked", button1ClickHandler);
ca.addEventListener("button2Clicked", button2ClickHandler);我相信鼠标事件在默认情况下仍然是冒泡的,所以你可以在弹出窗口中听到点击事件,然后使用event.target来确定它是否是你感兴趣的按钮之一。
如果你能理解这个或者需要更多的信息,请让我知道。
https://stackoverflow.com/questions/9853172
复制相似问题