Проблема с событием мыши LinkButton - PullRequest
0 голосов
/ 28 февраля 2011

Привет У меня есть 2 mxml файлов, в которых ....

CustComp.mxml

<mx:LinkButton id="linkbutton" label="ClickMe"  click="onLinkClicked()" mouseOver="onMouseOver()" mouseOut="onMouseOut()" />

private function onLinkClicked():void{
dispatchEvent(new CustomEvent("onClick");}
private function onMouseOver(event:CustomEvent):void{
dispatchEvent(new CustomEvent("onMouseOver");}
private function onMouseOut(event:CustomEvent):void{
dispatchEvent(new CustomEvent("onMouseOut");}

Main.mxml

var customComp:CustComp = new CustComp();
customComp.addEventListener(CustomEvent.MOUSE_CLICK1,onLinkClicked111);
customComp.addEventListener(CustomEvent.MOUSE_OVER1,onMouseOver111);
customComp.addEventListener(CustomEvent.MOUSE_OUT1,onMouseOut111);

private function onLinkClicked111(event:CustomEvent):void{
trace("click event");}
private function onMouseOver111(event:CustomEvent):void{
trace("mouse over event");}
private function onMouseOut111(event:CustomEvent):void{
trace("mouse out event");}

Когда я делаю указатель мыши или на кнопке ссылки в компоненте, событие отправляется на main.mxml и соответствующие функции вызываются идеально. Но когда я нажимаю кнопку, функция onLinkClicked111 () вызывается один раз и onMouseOut111 (), onMouseOver111 () неоднократно вызывается, пока я не заставлю свой курсор отойти от кнопки ссылки. Пожалуйста, помогите мне с тем, что я должен сделать, чтобы убедиться, что при нажатии только функция onLinkclicked111 () должна вызываться, а не mouseOver111 () или mouseOut111 ()

1 Ответ

0 голосов
/ 28 февраля 2011

Не уверен, что вам действительно нужно, но вот упрощенный пример

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
               creationComplete="application1_creationCompleteHandler(event)">


    <fx:Script>
        <![CDATA[
            import mx.events.FlexEvent;


            protected function application1_creationCompleteHandler(event:FlexEvent):void
            {
                addEventListener("onClick", onClickHandler);
                addEventListener("onMouseOver", onMouseOverHandler);
                addEventListener("onMouseOut", onMouseOutHandler);
            }           


            private function onClickHandler(e:Event) : void
            {
                trace("onClick Handled");
            }

            private function onMouseOverHandler(e:Event) : void
            {
                trace("onMouseOver Handled");
            }

            private function onMouseOutHandler(e:Event) : void
            {
                trace("onMouseOut Handled");
            }


            private function onLinkClicked():void
            {
                dispatchEvent(new Event("onClick"));
            }

            private function onMouseOver(event:MouseEvent):void
            {
                if (!event.buttonDown)
                {
                dispatchEvent(new Event("onMouseOver"));
                }
            }
            private function onMouseOut(event:MouseEvent):void
            {
                if (!event.buttonDown)
                {
                dispatchEvent(new Event("onMouseOut"));
                }
            }       

    ]]>
    </fx:Script>

    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <mx:LinkButton id="linkbutton" label="ClickMe"  click="onLinkClicked()" mouseOver="onMouseOver(event)" mouseOut="onMouseOut(event)" />

</s:Application>
...