如何以编程方式更改Spark Windowed Application StatusBar皮肤?

时间:2013-04-19 02:42:16

标签: css flex statusbar skin

目前我正在使用this post中的想法来修改我的s:WindowedApplication,所以在我的组件声明中我有skinClass="StatusBarSkin1"。同样在我的preinitialize函数中,我有一个方法,使用标签将正确的文本放到状态栏上,这很好。

当我尝试在我的CSS中设置skinClass时出现问题,因此我可以在StatusBarSkin1StatusBarSkin2之间进行更改。所以我正在做类似的事情:

Style1.css
----------

.mainWindow
{
     skinClass: ClassReference("StatusBarSkin1");
}


Style2.css
----------

.mainWindow
{
     skinClass: ClassReference("StatusBarSkin2");
}

如果我这样做,主题加载正常,但状态栏的文本将不会显示;如果我在WindowedApplication本身设置主题,那么当我使用方法更改CSS文件时,我无法更改状态栏上的外观。

有没有比我现在正在做的更好的方法来实现这个?

修改

状态栏对象只是一个HGroup,其中包含一些标签和内容。

状态栏外观由以下代码给出:

<s:Group id="statusBar"
     width="100%"
     minHeight="20">

<!-- status bar fill -->
    <s:Rect left="0"
            right="0"
            top="0"
            bottom="0">
            <s:fill>
                <s:LinearGradient rotation="90">
                    <s:GradientEntry color="0x575757" />
                    <s:GradientEntry color="0x373737" />
                </s:LinearGradient>
            </s:fill>
    </s:Rect>

<!-- status bar highlight -->
    <s:Rect left="1"
            right="1"
            top="1"
            bottom="0">
            <s:stroke>
                <s:LinearGradientStroke rotation="90"
                                        weight="1">
                    <s:GradientEntry color="0x575757" />
                    <s:GradientEntry color="0x373737" />
                </s:LinearGradientStroke>
             </s:stroke>
    </s:Rect>

<!-- status text -->
<!--- @copy spark.components.WindowedApplication#statusText -->
    <s:Label id="statusText" />

    <s:Group id="statusBarSkin" />

</s:Group>

然后我的preinit功能

private function InitStatusBar():void
{
    statusGroup = new StatusBar();
    (statusBar as Group).addElement(statusGroup);
}

0 个答案:

没有答案