2010-02-06 4 views
0

У меня есть функция DrawPlaybook, которая прослушивает два события, одно событие mouseclick и одно настраиваемое событие.Flex 3 Customevent не отправляется

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

ответ

2

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

Сообщите мне, если это работает.

+0

Изменение прослушивателя событий на: this.addEventListener (CustomPageClickEvent.PANEL_CLICKED, onCustomPanelClicked); работает. Большое спасибо за вашу помощь. – user267530

Смежные вопросы