我想在我正在编写的一个简单的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,我猜这可能是我遇到问题的原因,但我不确定。
有人有什么想法吗?这甚至可能,还是我在浪费时间?
感谢。
答案 0 :(得分:0)
样式和属性不同。您无法使用对象属性设置来设置样式。使用setStyle方法。喜欢这个:
closeButton.setStyle('upSkinName',closeButtonUpSkin)
closeButton.setStyle('overSkinName',closeButtonOverSkin)
等等......我只转换了前两个。元数据仅用于代码提示,因此不会对编译ActionScript代码的能力产生任何影响。