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
Actionscript 3 在自定义togglebuttonbar中创建多行标签_Actionscript 3_Apache Flex - Fatal编程技术网

Actionscript 3 在自定义togglebuttonbar中创建多行标签

Actionscript 3 在自定义togglebuttonbar中创建多行标签,actionscript-3,apache-flex,Actionscript 3,Apache Flex,我有一个自定义的toggleButtonBar类,允许在按钮上放置标签,但是,我希望标签是多行的。我不擅长扩展默认组件。有人能帮我吗 package com.vit2print.plugin.transvit.tools { import mx.controls.Button; import mx.controls.ToggleButtonBar; import mx.core.IFlexDisplayObject; public class IconToggl

我有一个自定义的toggleButtonBar类,允许在按钮上放置标签,但是,我希望标签是多行的。我不擅长扩展默认组件。有人能帮我吗

package com.vit2print.plugin.transvit.tools
{
    import mx.controls.Button;
    import mx.controls.ToggleButtonBar;
    import mx.core.IFlexDisplayObject;

    public class IconToggleButtonBar extends ToggleButtonBar
    {
        [Inspectable(enumeration="left,right,top,bottom", defaultValue="left")]
        public var labelPlacement:String = "left";

        override protected function createNavItem(label:String, icon:Class=null):IFlexDisplayObject {
            var b:Button = Button(super.createNavItem(label, icon));
            b.labelPlacement = labelPlacement;
            return b;
        }
    }
}

任何帮助都将不胜感激。

如果您可以使用Spark组件,您可以通过ButtonBar按钮的自定义皮肤来实现这一点。为按钮栏蒙皮时,您必须创建4个蒙皮:

  • 一个是纽扣杆本身
  • 第一个按钮一个
  • 中间的一个按钮
  • 最后一个按钮是一个
除非所有的按钮看起来都一样,否则在这种情况下,所有三种按钮只需要一层皮肤

首先,通过复制默认的Spark ToggleButtonSkin,为按钮创建三个(或一个)皮肤。在FlashBuilder向导中,如下所示:

向下滚动至底部,找到id为labelDisplay的标签标签。它的
masDisplayedLines
属性设置为
1
。删除它或将其设置为更适合您的用例的值

现在,通过复制默认的Spark ButtonBarSkin,为ButtonBar本身创建一个蒙皮。找到这三个按钮工厂,用您刚刚创建的按钮皮肤替换
skinClass
样式

<fx:Declarations>
    <fx:Component id="firstButton">
        <s:ButtonBarButton skinClass="net.riastar.skins.MyButtonBarFirstButtonSkin" />
    </fx:Component>

    <fx:Component id="middleButton" >
        <s:ButtonBarButton skinClass="net.riastar.skins.MyButtonBarButtonSkin" />
    </fx:Component>

    <fx:Component id="lastButton" >
        <s:ButtonBarButton skinClass="net.riastar.skins.MyButtonBarLastButtonSkin" />
    </fx:Component>
</fx:Declarations>

现在把这个皮肤贴在你的纽扣杆上,你就准备好了

<s:ButtonBar dataProvider="{dp}" skinClass="net.riastar.so.MyButtonBarSkin" width="200" />


记住,一般来说,对于Spark组件:如果您想让它们看起来不同,而不想真正改变/定制它们的行为,请使用蒙皮而不是定制组件。

您已经标记了您的问题
Flex4
,但您扩展了
mx
切换按钮栏。是哪一个?如果你能使用Spark components,这会容易得多。编辑:对不起,我不能使用Spark components。我只花了15分钟的时间给你写一个答案,你是同时将评论从“是”改为“否”,还是我在做梦?对不起,我试着尽快改,但显然还是太晚了(