TitleWindowSkin,TitleWindowCloseButtonSkin,着色:如何在自定义组件中复制此行为?

时间:2011-06-16 02:43:27

标签: flex skinning flex-spark

我尝试在自定义组件中使用spark.skins.spark.TitleWindowCloseButtonSkin,并使其看起来与TitleWindow中的外观类似。只需将其指定为Button的外观类就没问题。我还有一个.css样式应用于影响TitleWindow中关闭按钮的所有TitleWindow类。如果我在.css中设置TitleWindow的铬色,那么关闭按钮外观也会变色以匹配此颜色。我的自定义组件也使用与TitleWindow相同的样式引用。但是我的自定义组件内的Button实例没有变色。因此,虽然我有蓝色TitleWindow s蓝色彩色闭合按钮,但我有一个蓝色自定义组件,默认灰色背景关闭按钮(按下按钮,出现灰色背景)。

TitleWindowSkinTitleWindowCloseButtonSkin必须通过着色机制进行某些操作,但我不明白它是什么。我该如何解决这个问题?我需要在自定义组件中使关闭按钮样式与我TitleWindows中关闭按钮的样式匹配。

以下是问题的图片: TitleWindow close button on the left, custom on the right

TitleWindow位于两张照片的左侧。自定义组件位于右侧。 在左侧框架中,您会在向下位置看到TitleWindow关闭按钮,请注意其下方状态已着色以匹配TitleWindowSkin的主题。在右侧,您可以看到自定义组件的关闭按钮的向下状态。我不知道如何着色默认灰色以匹配应用于自定义组件的蓝色主题。

我相信有很多方法可以解决这个问题。我正在寻找最“正确”的方式。我不想硬编码颜色,因为后来一个真正的设计师会进来并调整.css。

PS我的自定义组件从spark.components.Group扩展而来。这可能是个问题吗? 我还应该提一下,使用默认spark ButtonSkin 的普通Button实例似乎在自定义组件中正确设置样式(部分原因是这个问题非常令人沮丧)。

编辑:是的,是的,确实看起来解决方案的第一步是从SkinnableComponent继承而不是Group或UIComponent ......

3 个答案:

答案 0 :(得分:1)

在你的TitleWindowSkin中你需要在排除数组中添加“closeButton”,我已经解决了同样的问题。

答案 1 :(得分:0)

嗯,这很奇怪,因为我似乎无法找到任何铬颜色或关闭按钮皮肤内的任何内容:

<s:Rect left="0" top="0" right="0" bottom="0">
        <s:stroke>
            <s:SolidColorStroke color="0x000000"
                                alpha="0.0"
                                alpha.over="0.7"
                                alpha.down="0.7"
                                weight="1"/>
        </s:stroke>
        <s:fill>
            <s:SolidColor color="0xCCCCCC" alpha="0" alpha.down="0.7" />
        </s:fill>
    </s:Rect>

如果我是你,我只是根据关闭按钮皮肤创建皮肤,并使用getStyle引用样式颜色,可以在css中更改。

答案 2 :(得分:0)

好的,所以我主要想出了问题。它源于我没有在我的自定义组件上使用适当的皮​​肤技术这一事实。自定义组件逻辑在它所处的位置很好,但是我需要准备一个单独的外观类,它实际上实例化自定义组件的“部件”(即:子组件)。目前,自定义组件在createChildren()中执行此操作。此外,为了利用着色机制,skin类必须继承自SparkSkin。 TitleWindowCloseButton实例需要是自定义组件的外观类的成员(以及在自定义组件类中具有引用)。除非明确排除,否则SparkSkin将自动对自定义组件的每个子项进行颜色转换(着色)。最后,回到自定义组件中,覆盖partAdded(),当“closeButton”出现时,在那时添加关闭按钮的事件处理程序。感觉非常Cairngorm-ey ...但是我离题了(必须抑制咆哮关于作为“帮助者”类的stoopid)。

相关问题