Flex 3 Customevent не отправляется - PullRequest
0 голосов
/ 06 февраля 2010

У меня есть функция DrawPlaybook, которая прослушивает два события, одно событие щелчка мышью и одно пользовательское событие.

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 никогда не вызывается вообще. Пожалуйста, дайте мне знать, если вы заметили что-то, что я пропустил.

1 Ответ

2 голосов
/ 06 февраля 2010

Это потому, что вы зарегистрировали прослушиватель событий для CustomPageClickEvent на Panel, но вы отправляете его из 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);.

Дайте мне знать, если это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...