簡體   English   中英

Flex 3 Customevent未被調度

[英]Flex 3 Customevent not getting dispatched

我有一個名為DrawPlaybook的函數,它偵聽兩個事件,一個是mouseclick事件,另一個是自定義事件。

public function DrawPlaybook(...):void
{
    //...... other stuff
    panel.addEventListener(MouseEvent.CLICK,
        function(e:MouseEvent){onClickHandler(e,this.panel)});
    panel.addEventListener(CustomPageClickEvent.PANEL_CLICKED,
        onCustomPanelClicked);
}

我打算從“ onClickHandler”內部調用自定義事件,如下所示:

public function onClickHandler(e:MouseEvent,panel):void
{
    var eventObj:CustomPageClickEvent = new CustomPageClickEvent("panelClicked");
    eventObj.panelClicked = panel;
    dispatchEvent(eventObj);
}

private function onCustomPanelClicked(e:CustomPageClickEvent):void {
    Alert.show("custom click");
}

這是CustomPageClickEvent的類定義:

package
{
    import flash.events.Event;

    import mx.containers.Panel;

    public class CustomPageClickEvent extends Event
    {
        public var panelClicked:Panel; 

        // Define static constant.
        public static const PANEL_CLICKED:String = "panelClicked";

        public function CustomPageClickEvent(type:String){
            super(type);
            //panelClicked = panel;
        }

        // Override the inherited clone() method.
        override public function clone():Event {
            return new CustomPageClickEvent(type);
        }

        public function getPanelSource():Panel{
            return panelClicked;
        }
    }
}

問題是“ onCustomPanelClicked”根本不會被調用。 如果您注意到我錯過的任何內容,請告訴我。

這是因為您已經在面板上注冊了CustomPageClickEvent的事件偵聽器,但是您是從DrawPlaybook調度它的

只需更改此:

var eventObj:CustomPageClickEvent = new CustomPageClickEvent("panelClicked");
eventObj.panelClicked = panel;
dispatchEvent(eventObj)

對此:

var eventObj:CustomPageClickEvent = new CustomPageClickEvent("panelClicked");
eventObj.panelClicked = panel;
panel.dispatchEvent(eventObj)

...或將事件偵聽器更改為this.addEventListener(CustomPageClickEvent.PANEL_CLICKED, onCustomPanelClicked);

讓我知道是否可行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM