Frage

So habe ich eine Popupbutton und wenn ich auf die Schaltfläche klicken möchte ich das Menü, das abgerundete Ecken haben herausspringt. Wie würde ich über das tun dies gehen?

UPDATE: Ich fand ein Update ähnlich dem, was ich tun will, kann es auf der folgenden Seite zu finden:

http: //blog.flexmonkeypatches.com/2007/10/08/flex-rounded-menues-using-masking/comment-page-1/

Der einzige Unterschied ist, dass ich das Menü mit einem Popupbutton bin zeigt. Bisher ist dies, was ich habe für mein benutzerdefiniertes Menü:

package {

    import flash.display.Sprite;

    import mx.controls.Menu;
    import mx.events.MenuEvent;

    public class MyMenu extends Menu {

        public function MyMenu() {
            super();
            addEventListener("menuShow", onMenuShow);
        }

        private function onMenuShow(e:MenuEvent):void {
            callLater(maskRoundedCorners,[e]);
        }


     private function maskRoundedCorners(e:MenuEvent):void {

                var menu:Menu = e.menu as Menu;
                menu.cacheAsBitmap=false;

                if (!menu.mask){
                    var maskx:uint = menu.x;
                    var masky:uint = menu.y;
                    var maskw:uint = menu.getExplicitOrMeasuredWidth();
                    var maskh:uint = menu.getExplicitOrMeasuredHeight();
                    var rad:int = menu.getStyle("cornerRadius") * 2;

                    var roundRect:Sprite = new Sprite();
                    roundRect.graphics.beginFill(0xFFFFFF);
                    roundRect.graphics.drawRoundRect(maskx,masky,maskw,maskh,rad);
                    roundRect.graphics.endFill();
                    menu.mask = roundRect;
            }
        }  
    }
}

Kann mir jemand helfen, mit dem, was ich vermisse ... Ich bin nicht sicher, ob ich die Menü Klassen Funktionen außer Kraft setzen muß.

Wenn ich lade mein Beispiel das:

addEventListener ( "menuShow", onMenuShow);

wird Feuer, aber wenn ich das Popupbutton klicken Sie auf das Menü die Funktion onMenuShow zeigen abgefeuert nicht zu werden und das regelmäßige Menü ist mit aus den abgerundeten Ecken sein Display.

Jede Hilfe zu diesem Thema wird geschätzt.

Danke

War es hilfreich?

Lösung

diese schließlich herausgefunden. Hier ist die Lösung, die ich kam mit:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

    <mx:Script>
        <![CDATA[
            import mx.controls.Menu;

            [Bindable]
            private var myMenu:Menu;

            private function popUpButtonInit():void {
                myMenu = new Menu();
                myMenu.dataProvider = arr;

            }

            private function menuOpenHandler():void {
                    var maskx:uint = myMenu.x; 
                    var masky:uint = myMenu.y - 1; 
                    var maskw:uint = myMenu.getExplicitOrMeasuredWidth(); 
                    var maskh:uint = myMenu.getExplicitOrMeasuredHeight(); 
                    var rad:int = myMenu.getStyle("cornerRadius");

                    var roundRect:Sprite = new Sprite();
                    roundRect.graphics.beginFill( 0xFFFFFF );
                    roundRect.graphics.drawRoundRect( maskx, masky, maskw, maskh, rad ); 
                    roundRect.graphics.endFill(); 
                    myMenu.mask = roundRect;

            }           


        ]]>
    </mx:Script>

    <mx:Style>
        Menu {
            corner-radius: 30;
        }
    </mx:Style>

    <mx:Array id="arr">
        <mx:Object label="Alert" />
        <mx:Object label="Button" />
        <mx:Object label="ButtonBar" />
        <mx:Object label="CheckBox" />
        <mx:Object label="ColorPicker" />
        <mx:Object label="ComboBox" />
    </mx:Array>

    <mx:PopUpButton width="78" height="25"  
                    initialize="popUpButtonInit();" 
                    popUp="{myMenu}" popUpGap="3" open="menuOpenHandler();" 
                    horizontalCenter="0" verticalCenter="0">
    </mx:PopUpButton>

</mx:Application>

Wenn Sie geschehen, um eine bessere Lösung haben, bitte kommentieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top