Flex 4改变皮肤部分值

时间:2011-05-24 14:52:34

标签: flash flex actionscript-3 visibility skin

您好 我想在运行时更改皮肤特定部分的可见性,但我不知道如何达到它。

2 个答案:

答案 0 :(得分:2)

这取决于你想隐藏/揭示的部分。如果您正在讨论一些特定于皮肤的图形(在主机组件中未表示为[SkinPart]声明),那么您可以实现两种策略:

  • 您的隐藏/显示逻辑只是视图的一部分,但没有组件功能。在这种情况下,你应该扩展你的皮肤并在那里放置隐藏/显示逻辑。您可以使用hostComponent
  • 属性的数据绑定
  • 您的隐藏/显示逻辑会添加一些新功能。扩展组件并引入一些新的视图状态或在那里声明目标皮肤部件,并在某些属性更改时更改组件中的可见性。在这种情况下,你可能也必须改变皮肤。

要更改已知声明的皮肤部件的可见性,您可以使用上面列出的策略的修改。在第二个策略中,您不需要声明皮肤部分:)

答案 1 :(得分:2)

“达到它”是什么意思?

组件类和外观类都使用该组件的名称引用外观部件。我通常在运行时隐藏皮肤部分是使用这个过程:

1)创建一个新的皮肤状态;像“skinPartHidden”这样的东西

2)在Component类中;创建一个skinPartVisible属性。当属性值改变时;调用invalidateSkinState()方法。这将导致getCurrentSkinState()在下一个渲染事件期间运行。

3)在get getCurrentSkinState()方法中;使用该属性的值将外观状态设置为新的skinPartHidden外观状态。像他这样的东西:

if(skinPartVisible == false){
 return "skinPartHidden";
}

4)皮肤类;使用MXML状态语法基于外观状态切换外观部件的可见性。像这样:

visible.skinPartHidden="true"