目前我正在使用这篇文章中的想法来皮肤我的 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);
}