在基于Flex4的AIR程序中改变状态栏字体大小

  • 本站文章除注明转载外,均为本站原创或者翻译。
  • 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商;
  • 本站部分原创和翻译文章提供markdown格式源码,欢迎使用文章源码进行转载;
  • 本博客采用 WPCMD 维护;
  • 本文标题:在基于Flex4的AIR程序中改变状态栏字体大小
  • 本文链接:http://zengrong.net/post/1123.htm

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

<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写成,更好编辑。这个组件的路径在这里:

[Flash Builder安装路径]\sdks\[SDK版本]\frameworks\projects\airspark\src\spark\skins\spark\  
<?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,否则将会导致运行时错误。至于原因么……自己想 ^_^