从Spark View中的UIComponent子项获取鼠标事件不起作用

时间:2011-11-03 16:59:53

标签: flash flex actionscript air

我有一个基本上就是这样的自定义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的尺寸并将其粘贴在边框中,以确保它应该是它应该的位置 - 同样的交易。没有事件。这是怎么回事?

1 个答案:

答案 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();
}