flex 加载方式3:通过actionScript加载,通过loader加载字体然后调用getDefinitionByName()获得字体Class,注册字体后,就可以用了。
package { import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.net.URLRequest; import flash.system.LoaderContext; import flash.text.Font; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; import flash.utils.getDefinitionByName; /** * 嵌入外部字体 * @author PhoenixKerry(http://blog.sina.com.cn/yyy98) */ public class Main extends Sprite { private var textField:TextField; private var fontLoader:Loader; public function Main() { textField = new TextField(); textField.selectable = false; textField.textColor = 0xFF0000; textField.autoSize = TextFieldAutoSize.LEFT; addChild(textField); fontLoader = new Loader(); fontLoader.load(new URLRequest("./assets/game_font.swf"), new LoaderContext(false, loaderInfo.applicationDomain)); fontLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadFontCompleteHandler); } // 读取字体完成,通过 TextFormat 应用到 TextField 中的文字 private function loadFontCompleteHandler(e:Event):void { fontLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loadFontCompleteHandler); var alphaFitnessFontClazz:Class = getDefinitionByName("AlphaFitnessFont") as Class; Font.registerFont(alphaFitnessFontClazz); var alphaFitnessFont:Font = new alphaFitnessFontClazz() as Font; var textFormat:TextFormat = new TextFormat(alphaFitnessFont.fontName, 60, null, true); textField.defaultTextFormat = textFormat; textField.embedFonts = true; textField.text = "Hello, zhz!!!"; } } }
/assets/game_font.swf:嵌入式字体swf地址
AlphaFitnessFont:swf字体类名
打包ttf为swf字体代码:
package { import flash.display.Sprite; public class FontAssets extends Sprite { [Embed(source="font/AlphaFitness.ttf",fontName="zhzFont1",mimeType="application/x-font")] public var pixelFont1:Class; [Embed(source="font/WeibeiFont.ttf",fontName="zhzFont2",mimeType="application/x-font")] public var pixelFont2:Class; [Embed(source="font/WindTailsFont.ttf",fontName="zhzFont3",mimeType="application/x-font")] public var pixelFont3:Class; [Embed(source="font/YayaSimplifiedFont.ttf",fontName="zhzFont4",mimeType="application/x-font")] public var pixelFont4:Class; [Embed(source="font/YegenyouSimplifiedFont.ttf",fontName="zhzFont5",mimeType="application/x-font")] public var pixelFont5:Class; } }