我有一个名为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“根本不会被调用。如果你注意到我遗漏了什么,请告诉我。
发布于 2010-02-06 10:16:42
这是因为您已经在面板上注册了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);。
如果有效的话,请告诉我。
https://stackoverflow.com/questions/2211678
复制相似问题