全局设置禁用组件的alpha(MX和Spark)

时间:2013-01-31 16:44:57

标签: flex flex4 alpha flex-mx flex-spark

我希望我的应用程序能够在舞台上显示每个已禁用的UIComponent并显示一定数量的alpha。

我认为默认值是.5,这使得一些字段非常难以理解。 将它减少到.3应该可以解决我的问题。

  • 对于Spark组件,我知道我可以创建自定义皮肤并进行编辑 alpha.disabled。但我不想为30多个组件做到这一点 只是为了阿尔法风格的属性

  • 设置disabledOverlayAlpha只适用于容器,我需要的东西实际上适用于dislay层次结构最低层的组件。如果我没有记错,这仅适用于mx组件。

为了让所有UIComponents在禁用它们时显示相同数量的alpha,最实用的方法是什么?

干杯

1 个答案:

答案 0 :(得分:1)

不是最漂亮的解决方案,但是我唯一想出的就是你要求任何 UIComponent:

  • 在舞台上收听Event.ADDED,以便捕获添加到displayList的每个组件。
  • 在事件的target(这是刚刚添加的组件)上开始侦听“enabledChanged”。当“enabled属性发生变化时,UIComponent会调度”enabledChanged“。
  • 设置触发此事件的组件的alpha
  • 同样不要忘记在从舞台中删除组件时清理这些事件侦听器,否则会出现严重的性能问题。
  • 对于Spark组件,您可能必须以某种方式覆盖Skin的默认禁用alpha值。这可能需要侦听皮肤的StateChangeEvent.CURRENT_STATE_CHANGE。

呸!我希望我能忽略一个更简单的选择。否则我可能只是创建所有Spark皮肤,可能还有一个用于禁用alpha值的附加样式,以便您可以在将来全局设置它。