нижний компонент не получает события мыши - PullRequest
0 голосов
/ 20 апреля 2010

HI

     I am sure this is very basic, however I am not able to find the solution. 

   I have a base ShapeContainer(UIComponent). I add a uicomponent which has mouse down listener to ShapeContainer. the listener works great.

Когда я добавляю простой спрайт (рисовать квадрат) в ShapeContainer, слушатель больше не работает.

В коде, если я прокомментирую ниже строки, прослушиватель событий работает нормально.

       **shapeContainer.addChildAt(square,1);**

Я пробовал несколько вещей, таких как mouseenabled = false на верхнем спрайте. также пытался добавить addChildAt, но ни один из них не помог.

Как нарисовать фигуру, а также заставить слушателя событий работать.

        protected function application1_creationCompleteHandler(event:FlexEvent):void
        {               

            var shapeContainer:UIComponent = new UIComponent();
            shapeContainer.x=100;
            shapeContainer.y=100;
            shapeContainer.width=200;
            shapeContainer.height=200;
            rawChildren.addChild(shapeContainer);


            var EventListenerShape:UIComponent = new UIComponent();

            EventListenerShape.x=100;
            EventListenerShape.y=100;
            EventListenerShape.width=200;
            EventListenerShape.height=200;

            EventListenerShape.graphics.clear();
            EventListenerShape.graphics.beginFill(0xf1f1f1, 0.1);
            EventListenerShape.graphics.drawRoundRect(0, 0, 200, 200, 10, 10);              
            EventListenerShape.alpha = 0;
            EventListenerShape.graphics.endFill();
            EventListenerShape.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownfunc);
            shapeContainer.addChild(EventListenerShape);


        var square:Sprite = new Sprite();
        square.graphics.lineStyle(4,0x00FF00);
        square.graphics.drawRect(0,0,20,20);
        square.mouseEnabled=false;
        shapeContainer.addChildAt(square,1);    



        }

        private function mouseDownfunc(e:MouseEvent){
            trace("mouse Down **");
        }

          
    ]]>
</mx:Script>

<mx:Canvas id="uic" width="100%" height="100%"   backgroundColor="0xFFFFFF">

</mx:Canvas>

Ответы [ 2 ]

0 голосов
/ 21 апреля 2010

My Bad, Это была маленькая ошибка. Я только что изменил x, y для квадрата. Я должен либо присвоить 0, либо прокомментировать следующие 2 строки.

EventListenerShape.x=100;
EventListenerShape.y=100;

спасибо

0 голосов
/ 20 апреля 2010

Попробуйте установить квадрат mouseEnabled и mouseChildren в значение false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...