在Flex3时代,要改变AIR程序的状态栏字体,可以使用修改CSS的方法:

1
2
3
4
5
6
7
8
9
10
11
<mx:Style>
.boldRed {
color: red;
fontSize: 12;
fontWeight: bold;
}
WindowedApplication {
statusTextStyleName: boldRed;
}
</mx:Style>

但是,在Flex4中,这招不管用了,默认的spark组件采用了新的方法来定义皮肤,这直接导致你根本找不到statusTextStyleName属性。

幸运的是,spark提供了更好的方法。spark的Window或者WindowedApplication组件的默认皮肤都包含statusText这个“外观部件”,我们对它的属性进行设置即可。当然,我们也可以完全重写默认的skin,skin采用MXML写成,更好编辑。这个组件的路径在这里:

1
[Flash Builder安装路径]\sdks\[SDK版本]\frameworks\projects\airspark\src\spark\skins\spark\
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
applicationComplete="init()" status="测试">
<fx:Style>
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";
s|WindowedApplication
{
font-size: 12;
font-family:"Microsoft YaHei,SimSun";
}
.errorTip
{
font-size: 12;
}
</fx:Style>
<fx:Script>
<![CDATA[
private function init():void
{
statusText.setStyle('fontSize', 12);
}
]]>
</fx:Script>
</s:WindowedApplication>

需要注意的是,如果把这招用在Window组件中,就必须在Window.open()执行之后再调用setStyle,否则将会导致运行时错误。至于原因么……自己想 ^_^

留言

2010-08-31
次访问