Actionscript 3 了解actionscript 3自定义事件处理程序

Actionscript 3 了解actionscript 3自定义事件处理程序,actionscript-3,apache-flex,flex4,flex4.5,Actionscript 3,Apache Flex,Flex4,Flex4.5,为了在某些事件中使用传递参数,我使用了自定义事件。我有一个针对手机的选项卡式视图导航应用程序。我有几点看法。一段时间后,其中一个视图会弹出一个窗口(应用程序评级),该窗口有3个选项(1.立即评级,2.稍后提醒,3.不提醒) 我创建了一个自定义事件CustomMouseEvent(有一个不错的站点),它可以接受一个对象类型的额外参数。我有一个用于此弹出窗口RatePrompt的组件,其中包含3个评级选项的单击处理程序。这些单击处理程序将依次生成参数并将此自定义事件分派到另一个视图,该视图可以处理此

为了在某些事件中使用传递参数,我使用了自定义事件。我有一个针对手机的
选项卡式视图导航应用程序
。我有几点看法。一段时间后,其中一个视图会弹出一个窗口(应用程序评级),该窗口有3个选项(1.立即评级,2.稍后提醒,3.不提醒)

我创建了一个自定义事件
CustomMouseEvent
(有一个不错的站点),它可以接受一个对象类型的额外参数。我有一个用于此弹出窗口
RatePrompt
的组件,其中包含3个评级选项的单击处理程序。这些单击处理程序将依次生成参数并将此自定义事件分派到另一个视图,该视图可以处理此分派事件,但不知何故,该事件无法到达第二个分派
分级PromptHandler

在HomeView中,我使用

<fx:Declarations>
    <components:RatePrompt id="rateMessage"/>
</fx:Declarations>
在视图中,我打开弹出窗口并添加事件侦听器和处理程序

public function popupRateMessage():void
{
    PopUpManager.addPopUp(homeView.rateMessage, homeView.homeContainer as DisplayObjectContainer, false);
    PopUpManager.centerPopUp(homeView.rateMessage);
    homeView.rateMessage.y=this.homeView.stage.fullScreenHeight/2-(homeView.rateMessage.height/2);
    homeView.rateMessage.message = Constants.RATE_REMINDER_PROMPT;
    trace("AAA");
    homeView.rateMessage.btnOK.addEventListener(CustomMouseEvent.CLICKED, ratingPromptHandler);
    homeView.rateMessage.btnNever.addEventListener(CustomMouseEvent.CLICKED, ratingPromptHandler);
    homeView.rateMessage.btnRemind.addEventListener(CustomMouseEvent.CLICKED, ratingPromptHandler);
}

private function ratingPromptHandler(event:CustomMouseEvent):void {
    trace(event.parameter);
    trace(event.parameter[Tables.RATE_REMINDER]);
}
在调试期间,我只能在按下
btnOK
时看到以下跟踪结果。事件无法到达
分级PromptHandler
处理程序

AAA
OK

请帮我指出解决这个问题的方法。谢谢

我想你的问题在这里: 调度事件(事件被调度)

这应该通过您单击的按钮发送。按照您使用它的方式,它将由应用程序的根组件进行调度

您应该使用类似以下内容:event.target.dispatchEvent(eventToBeDispatched)

只是一张纸条。为什么单击后要发送另一个事件?只需调用另一个方法,使用所需类中的任何参数,如:class.ratingPromptHandler(params)


希望我能提供帮助。

您是否已将以下内容添加到mxml文件中

   <fx:Metadata>
            [Event(name="clicked", type="CustomMouseEvent")]
   </fx:Metadata>

[事件(name=“clicked”,type=“CustomMouseeEvent”)]

谢谢,是的,我可以使用
CLASS.ratingPromptHandler(params)
AAA
OK
   <fx:Metadata>
            [Event(name="clicked", type="CustomMouseEvent")]
   </fx:Metadata>