Flex轻松设置按钮模式到所有按钮

时间:2011-01-27 11:57:39

标签: flex button

有一种简单的方法可以将buttonMode设置为true来应用我的应用程序中的所有按钮吗? 我想创建一个自定义组件,它扩展了s:Button并将buttonMode设置为true,但我想知道是否有更简单的CSS方式。

提前致谢

5 个答案:

答案 0 :(得分:4)

正如韦德所说,皮肤是一个很好的方法。虽然在皮肤上设置buttomMode =“true”将无法按照您想要的方式工作,但您可以从皮肤设置主机按钮的buttonMode,如下所示:

<fx:Script>
    <![CDATA[
        import spark.components.Button;

        override protected function commitProperties():void
        {
            super.commitProperties();
            hostComponent.buttonMode = true;
        }

    ]]>
</fx:Script>

答案 1 :(得分:1)

你可以用皮肤和css做到这一点。将默认ButtonSkin复制到自定义外观类,并在外观上设置buttonMode =“true”。 (如果这不起作用,您可以尝试在创建完成时设置hostComponent.buttonMode = true。)然后将s:Button的外观设置为css中的自定义外观。

答案 2 :(得分:0)

不幸的是,我认为您没有任何其他选项可以创建自定义按钮。

你可以修补原始的Button组件,但我不建议这个实践。

答案 3 :(得分:0)

您可以尝试编写一个在运行时遍历所有对象的爬虫,或类似的东西:

stage.addEventListener(Event.ADDED_TO_STAGE, parseItem, true);

然后:

function parseItem(e:Event):void{
  if (e.target is Button)
      e.target.buttonMode = true;
}

添加到舞台的每个项目都应该经历此事件(即使只将其父级添加到显示列表中)。

当然,在将任何内容添加到舞台之前,您必须添加此事件侦听器!

答案 4 :(得分:0)

我还建议Maurycy的方法,或者你可以在项目中修补Button类。这甚至可能更容易,并且不会导致性能损失。