Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex Flex 3:带有弹出按钮的圆形菜单_Apache Flex_Flex3 - Fatal编程技术网

Apache flex Flex 3:带有弹出按钮的圆形菜单

Apache flex Flex 3:带有弹出按钮的圆形菜单,apache-flex,flex3,Apache Flex,Flex3,所以我有一个弹出按钮,当我点击按钮时,我希望弹出的菜单有圆角。我该怎么做呢 更新: 我发现了一个与我想做的类似的更新,可以在以下页面上找到: 唯一的区别是我用弹出按钮显示菜单。到目前为止,这是我的自定义菜单: package { import flash.display.Sprite; import mx.controls.Menu; import mx.events.MenuEvent; public class MyMenu extends Menu

所以我有一个弹出按钮,当我点击按钮时,我希望弹出的菜单有圆角。我该怎么做呢

更新: 我发现了一个与我想做的类似的更新,可以在以下页面上找到:

唯一的区别是我用弹出按钮显示菜单。到目前为止,这是我的自定义菜单:

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;
            }
        }  
    }
}
有人能帮我解决我缺少的东西吗?我不确定是否需要覆盖任何菜单类函数

当我加载我的示例时:

添加的列表器(“menuShow”,onMenuShow)

获取激发,但当我单击弹出按钮显示菜单时,onMenuShow函数未激发,常规菜单显示时没有圆角

在此方面的任何帮助都将不胜感激


谢谢你终于明白了。以下是我提出的解决方案:

<?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>

菜单{
角半径:30;
}

如果您碰巧有更好的解决方案,请发表评论。

最终解决了这个问题。以下是我提出的解决方案:

<?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>

菜单{
角半径:30;
}
如果您碰巧有更好的解决方案,请发表评论