ライブラリパネルで作ったフォントをasで生成したTextFieldに反映する方法メモ。ここで欲しいのはTextFormatのfontに受け渡すフォント名。ライブラリで設定したリンケージ名からフォント名をしょっ引く関数。
こんな感じ。
function getFontName( linkageName ):String { Font( new ( getDefinitionByName( linkageName ) as Class )() ).fontName; }
使う時はこんな感じ
var tf:TextField = new TextField(); tf.embedFonts = true; tf.text = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var fmt:TextFormat = new TextFormat(); fmt.font = getFontName( "myFont" ); tf.setTextFormat(fmt); addChild(tf);
パッケージ化したらこんな感じ
package net.sourcelab.utils { import flash.text.Font; import flash.utils.getDefinitionByName; /** * ... * @author Bouze */ public class FontUtil { /** * フォントのリンケージ名から内部参照用のフォント名を取得する * @param linkageName リンケージ名 * @return フォント名 */ public static function getFontName( linkageName:String ):String { return getFont( linkageName ).fontName; } /** * フォントのリンケージ名からFontオブジェクトを取得する * @param linkageName リンケージ名 * @return Fontオブジェクト */ public static function getFont( linkageName:String ):Font { return Font( new ( getDefinitionByName( linkageName ) as Class )() ); } } }