0

目前我正在使用这篇文章中的想法来皮肤我的 s:WindowedApplication,所以在我的组件声明中我有skinClass="StatusBarSkin1". 同样在我的预初始化函数中,我有一个方法可以使用标签将正确的文本放在状态栏上,效果很好。

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

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);
}
4

0 回答 0