Получение событий мыши от дочернего элемента UIComponent в Spark View не работает - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть пользовательский 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 к представлению, я получаю события мыши просто отлично.При программном добавлении обработчика в конструктор моего подкласса я ничего не получаю.Я подумал, что, возможно, компоновка была неправильной, поэтому я явно установил размеры моего UIComponent и вставил его в рамку, чтобы быть уверенным, что это именно то, что и должно было быть - та же самая сделка.Нет событийЧто здесь происходит?

1 Ответ

1 голос
/ 04 ноября 2011

Вам нужно нарисовать что-то внутри вашего 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();
}
...