我们如何在父组件内部监听PopUpWindow中调度的事件?

时间:2010-12-18 12:16:37

标签: flex actionscript-3 events actionscript event-handling

我有一个警告Popwindow有2个按钮'Submit'和'Cancel'。 在单击提交时,我调用一个函数并发送带有bubble true的'submit'事件。我想在我的父应用程序中处理这个问题。我已经使用父容器和弹出窗口实例注册了该事件。

Inside Parent.mxml :


private function launchWarningPopUp():void {
        var win:Warning = PopUpManager.createPopUp(this, Warning, false ) as Warning; 
        win.addEventListener(SubmitQuizEvent.SUBMIT_QUIZ, submissionDone);
        this.addEventListener(SubmitQuizEvent.SUBMIT_QUIZ, submissionDone);
        PopUpManager.centerPopUp(win);
}

private function submissionDone():void{
   Alert.show('Inside SubmissionDoneTwo');
}

Inside Warning.mxml:

private function submitHanlder():void {
            dispatchEvent(new SubmitQuizEvent(SubmitQuizEvent.SUBMIT_QUIZ,true));
            PopUpManager.removePopUp(this);
}

该事件应该冒泡到Parent.mxml。 我在这里做错了还是根本不可能?

我被困在这里,在这方面的任何帮助将不胜感激。 提前谢谢。

3 个答案:

答案 0 :(得分:1)

您应该将事件侦听器添加到systemManager,因为弹出窗口是系统管理器的直接子级

答案 1 :(得分:1)

你是对的。弹出窗口不是创建它的组件的子节点。正如弗洛里安所说的那样,系统管理员和事件的孩子不会像你期望的那样冒泡。

答案 2 :(得分:0)

由于签名丢失,我无法在我的函数中捕获此事件。添加完成后,代码就可以了。

private function submissionDone(event:SubmitQuizEvent):void{

            Alert.show('Inside SubmissionDone with signature');
}

=============================================== ==================================

我现在面临另一个问题。 只有当我使用'win.addEventListener ....'而不是'this.addEventListener ............'时才会捕获事件。这对我来说太过惊人了

如果Parent.mxml是'win'的父级,则在'win'内触发的事件应该冒泡并且应该被父级捕获。这不会发生。

'win'不被视为Parent.mxml的孩子吗?并被视为外部组件?

请让我知道你对此的看法?