目前我正在使用this post中的想法来修改我的s:WindowedApplication,所以在我的组件声明中我有skinClass="StatusBarSkin1"
。同样在我的preinitialize函数中,我有一个方法,使用标签将正确的文本放到状态栏上,这很好。
当我尝试在我的CSS中设置skinClass
时出现问题,因此我可以在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);
}