可以重用Flex库资产吗? (即TitleWindow的closeButton)

时间:2010-12-24 23:22:10

标签: flex action

我想在我正在编写的一个简单的Flex组件中重用TitleWindow的closeButton,但是我在编译时遇到了麻烦。我复制了处理closeButton的代码,看起来有点像这样:

closeButton = new Button();
closeButton.styleName = new StyleProxy(this, closeButtonStyleFilters);

closeButton.upSkinName = "closeButtonUpSkin";
closeButton.overSkinName = "closeButtonOverSkin";
closeButton.downSkinName = "closeButtonDownSkin";
closeButton.disabledSkinName = "closeButtonDisabledSkin";
closeButton.skinName = "closeButtonSkin";
closeButton.explicitWidth = closeButton.explicitHeight = 16;

引用了这样的样式:

<mx:Metadata>
    [Style(name="closeButtonSkin", type="Class", inherit="no", states="up, over, down, disabled")]
    [Style(name="closeButtonDisabledSkin", type="Class", inherit="no")]
    [Style(name="closeButtonDownSkin", type="Class", inherit="no")]
    [Style(name="closeButtonOverSkin", type="Class", inherit="no")]
    [Style(name="closeButtonUpSkin", type="Class", inherit="no")]
</mx:Metadata>

但编译器抱怨它无法找到引用的样式,即:

1178: Attempted access of inaccessible property disabledSkinName through a reference with static type mx.controls:Button.

我注意到TitleWindow / Panel源引用了Assets.swf,我猜这可能是我遇到问题的原因,但我不确定。

有人有什么想法吗?这甚至可能,还是我在浪费时间?

感谢。

1 个答案:

答案 0 :(得分:0)

样式和属性不同。您无法使用对象属性设置来设置样式。使用setStyle方法。喜欢这个:

closeButton.setStyle('upSkinName',closeButtonUpSkin)
closeButton.setStyle('overSkinName',closeButtonOverSkin)

等等......我只转换了前两个。元数据仅用于代码提示,因此不会对编译ActionScript代码的能力产生任何影响。