我有一个基本上就是这样的自定义UIComponent:
public class WhiteboardUIComponent extends UIComponent
{
public function WhiteboardUIComponent() {
super();
this.addEventListener(MouseEvent.MOUSE_DOWN, mouseBeginListener);
}
public function mouseBeginListener(event:MouseEvent):void {
trace("Mouse!");
}
}
我将它添加到我的视图中:
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mh="*"
actionBarVisible="false" mouseChildren="true" enabled="true" mouseEnabled="true" >
<mh:WhiteboardUIComponent id="whiteboard" x="0" y="0" width="100%" height="100%"/>
</s:View>
这绝对是我能做出的最简单的例子。 s:View正在吞噬我的鼠标事件 - 如果我将MXML中的处理程序添加到View中,我会得到鼠标事件。在我的子类'构造函数中以编程方式添加处理程序时,我什么也得不到。我想也许布局是错误的,所以我明确地设置了我的UIComponent的尺寸并将其粘贴在边框中,以确保它应该是它应该的位置 - 同样的交易。没有事件。这是怎么回事?
答案 0 :(得分:1)
您需要在UIComponent中绘制一些内容。在自定义WhiteBoard中尝试以下操作:
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
graphics.clear();
graphics.beginFill(0xFFFFFF, 0.0000001);
graphics.drawRect(0, 0, unscaledWidth, unscaledHeight);
graphics.endFill();
}