Apache flex 如何在flex中分派自定义事件

Apache flex 如何在flex中分派自定义事件,apache-flex,flex3,flex4,flexbuilder,Apache Flex,Flex3,Flex4,Flexbuilder,如何在flex中分派自定义事件 在我的主mxml文件中,我将此代码用于分派此函数 private var ageVerifyMessage:AgeVerify = new AgeVerify(); public function onAgeVerifyFailed(event:ControlManagerEvent) : void { ageVerifyMessage.visible = true; return; }// end functio

如何在flex中分派自定义事件

在我的主mxml文件中,我将此代码用于分派此函数

private var ageVerifyMessage:AgeVerify = new AgeVerify();

public function onAgeVerifyFailed(event:ControlManagerEvent) : void
    {
        ageVerifyMessage.visible = true;
        return;
    }// end function
在controlmanagerevent中,我使用了此代码

private function getUserDetailsHandler(event:ResultEvent) : void
    {
        userDetails = ResponseParser.parseUserDetails(event.result as Object);
        if (!userDetails || !userDetails.age)
        {
            if (_flashVars.birth_date && _flashVars.birth_date != "" && _flashVars.birth_date.toString().split("/").length == 3)
            {
                reportConnectedUser();
            }
            else
            {
                dispatchEvent(new ControlManagerEvent(ControlManagerEvent.onAgeVerifyFailed));
            }
        }
        else
        {
            reportConnectedUser(userDetails.age);
        }
        return;
    }// end function



private var _controller:IControlManager;


public function initApp() : void
    {
        _controller.addEventListener(ControlManagerEvent.onServerStatusChange, onServerStatusChange);
        _controller.addEventListener(ControlManagerEvent.onSelfCamFailed, onSelfCamFailed);
        _controller.addEventListener(ControlManagerEvent.onNoCamerasFound, onNoCamerasFound);
        _controller.addEventListener(ControlManagerEvent.onAgeVerifyFailed, onAgeVerifyFailed);

_controller.initController();
        return;
    }// end function




<local:AgeVerify horizontalCenter="0" id="ageVerifyMessage1" verticalCenter="0" visible="false"/>
私有函数getUserDetailsHandler(事件:ResultEvent):void { userDetails=ResponseParser.parseUserDetails(event.result作为对象); 如果(!userDetails | |!userDetails.age) { 如果(\u flashVars.birth\u date&&u flashVars.birth\u date!=“”&&u flashVars.birth\u date.toString().split(“/”)。长度==3) { reportConnectedUser(); } 其他的 { dispatchEvent(新建ControlManagerEvent(ControlManagerEvent.onAgeVerifyFailed)); } } 其他的 { reportConnectedUser(userDetails.age); } 返回; }//端函数 专用变量控制器:IControlManager; 公共函数initApp():void { _controller.addEventListener(ControlManagerEvent.onServerStatusChange、onServerStatusChange); _controller.addEventListener(ControlManagerEvent.onSelfCamFailed,onSelfCamFailed); _controller.addEventListener(controlmanagervent.onNoCamerasFound、onNoCamerasFound); _controller.addEventListener(ControlManagerEvent.onAgeVerifyFailed,onAgeVerifyFailed); _controller.initController(); 返回; }//端函数
我想问一下我遗漏了什么,为什么我的customevents不工作?从你的代码中我可以看到你正在监听
\u controller
的事件,但是分派事件的对象不是
\u controller
,而是
这个
似乎
\u controller。分派事件(YourEvent)
应该可以工作

或者,我假设您没有使用任何事件框架(如Parsley或Swiz),您的_控制器应该是组件树中的根:

Application
    IControlManager(_controller)
        HBox
            YourComponent

当您在组件中调度冒泡事件时,您的_控制器将可以调用相应的侦听器。

@constantiner我使用它就像使用公共函数initApp():void{u controller.addEventListener一样(ControlManagerEvent.onAgeVerifyFailed,onAgeVerifyFailed);其中private var _controller=Icontrolmanager@Constantiner这意味着我应该像这样编辑代码。addEventListener(ControlManagerEvent.onAgeVerifyFailed,onAgeVerifyFailed);@Constantiner它不起作用,在我的代码中,我使用此代码来显示ageverify(ageverify是我的自定义组件)当我使用id ageverifymessage1时,正如您告诉我重命名id名称这是代码。您认为id名称应该是ageVerifyMessage而不是ageverifymessage1吗?如果您的答案是肯定的,我必须告诉您,如果我这样做,我会收到错误消息,说“与命名空间内部的定义ageVerifyMessage存在冲突”。很难阅读这种u非格式代码。请将此代码添加到原始问题。
事件(类型:String,气泡:Boolean=false,可取消:Boolean=false)
,将
气泡设置为
true