【发布时间】:2012-02-10 05:24:42
【问题描述】:
?问题很简单,我扩展Button 来创建ImageButton,我扩展ButtonSkin 来创建ImageButtonSkin。但是,当我这样定义 hostComponent 时:
public var hostComponent:ImageButton
我收到一个错误,提示与 ButtonSkinBase 中的 hostComponent:ButtonBase 存在冲突。
如何扩展皮肤并为其提供新的 hostComponent?
【问题讨论】:
-
我不认为你可以。此外,为什么要创建 ImageButton? Spark 按钮有一个“图标”样式来给它一个图像。
-
哇,太好了(不是)。所以,你可以扩展皮肤,但你只能将它用于父皮肤指定的组件,太棒了。 ImageButton 因为我希望整个图标都具有图像背景,而不仅仅是图标。它通常甚至没有文字。
-
啊哈,在这种情况下,我会将其设为自定义按钮的样式,而不是属性。这样您就可以通过
getStyle()方法在您的皮肤中访问它,而不必覆盖hostComponent。 -
如何让它成为一种风格?抱歉可能是一个显而易见的问题,但我只知道 setStyle() 方法,您需要在父视图初始化后调用它,这在过程中发生得太晚了,在皮肤类中的样式初始化之后。
-
在您的 Button 类中使用
[Style(name="backgroundImage")]元数据。然后,当您开始输入 MXML 时,FlashBuilder 也会建议它,并且编译器将接受 MXML 属性。
标签: apache-flex flex4 skinning flex-mobile