4.5.确定用户电脑上安装的所有字体

4.5.1. 问题
我想确定用户电脑上安装的所有字体,然后为Text 组件选择列表中的一个字体显示。
4.5.2. 解决办法
使用Font 类中的enumerateFonts 方法设置一个带有选择好字体的fontName 属性的Text 组件的fontFamily 风格
4.5.3. 讨论
Font 类定义了一个静态方法叫做enumateFonts 来返回一个用户电脑上所有字体的数组。这个方法返回包括flash.text.Font 对象的数组。flash.text.Font 定义了三种属性。

fontName
这是一个系统报告的字体名称。在某些情况下,比如日语,韩语或者阿拉伯语,Flash Player 可能无法正常地渲染这些字体。

fontStyle
这是一个字体风格: Regular, Bold, Italic, or BoldItalic.

fontType
这个属性有两个选择。一个叫设备字体,意思是用户电脑上已经安装了的字体。另一个叫嵌入式字体,意思是把字体嵌入到swf 文件中。

在下面的例子中,这些字体被传递给一个ComboBox,用户可以为Text area 选择一个字体类型。setStyle 方法的调用
+展开
-ActionScript
text.setStyle("fontFamily", (cb.selectedItem as Font).fontName);

设置了Text 组件中的当前字体为ComboBox 中Font 对象的fontName 属性所对应的字体。

这里是你需要的完整代码:
+展开
-XML
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxmlwidth="400"
height="300creationComplete="findAllFonts()">

<mx:Script>
<![CDATA[
private var style:StyleSheet;
[Bindable]
private var arr:Array;
private function findAllFonts():void
{
arr = Font.enumerateFonts(true);
arr.sortOn("fontName", Array.CASEINSENSITIVE);
}
private function setFont():void
{
text.setStyle("fontFamily", (cb.selectedItem as
Font).fontName);
}

]]>
</mx:Script>
<mx:ComboBox id="cbdataProvider="{arr}change="setFont()"
labelField="fontName"/>

<mx:Text text="Sample Textid="textfontSize="16"/>
</mx:VBox>

加支付宝好友偷能量挖...


评论(0)网络
阅读(99)喜欢(0)flash/flex/fcs/AIR