События не запускаются в пользовательском компоненте Flex - PullRequest
0 голосов
/ 24 июня 2011

Я впервые попробовал написать собственный компонент flex 4, расширив класс UIComponent.К сожалению, я не могу заставить компонент реагировать на любые события мыши.Я попытался установить для mouseEnabled значение true, это компонент, а также для mouseChildren значение true в родительском объекте (объект stage).

Кажется, что бы я ни делал, мои события щелчка могут быть обнаружены со сцены, но не с помощью компонента.

Вот мой класс компонентов:

package components {

    import mx.core.UIComponent;

    public class DrawCanvas extends UIComponent {

        public function DrawCanvas() {
            super();
        }
    }
}

Ивот мой файл WindowedApplication:

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark" 
                       xmlns:mx="library://ns.adobe.com/flex/mx"
                       xmlns:cmp="components.*"
                       minWidth="800" minHeight="600"
                       applicationComplete="init()">

    <fx:Script>
        <![CDATA[
            private function init():void {
                myBox.addEventListener(MouseEvent.CLICK, reportClick);
                stage.addEventListener(MouseEvent.CLICK, stageClick);
            }

            private function stageClick(event:MouseEvent):void {
                trace(event.target, event.currentTarget);
                trace("Stage Click", event.localX, event.localY);
            }

            private function reportClick(event:MouseEvent):void {
                trace(event.target, event.currentTarget);
                trace("Click", event.localX, event.localY);
            }
        ]]>
    </fx:Script>

        <cmp:DrawCanvas id="myBox"
                    height="100%" width="100%"/>

</s:WindowedApplication>

Заранее спасибо,

Сэм

1 Ответ

2 голосов
/ 24 июня 2011

Компонент может отправлять события мыши только видимым частям. Поскольку у вашего компонента нет содержимого, он не может запускать события мыши. Попробуйте что-то вроде:

package components {

    import mx.core.UIComponent;

    public class DrawCanvas extends UIComponent {

        public function DrawCanvas() {
            super();
        }

        override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
        {
            super.updateDisplayList(unscaledWidth, unscaledHeight);
            graphics.clear();
            graphics.beginFill(0xFFFFFF, 0);
            graphics.drawRect(0, 0, unscaledWidth, unscaledHeight);
            graphics.endFill();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...