using embedded font in generated text field

ライブラリパネルで作ったフォントを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 )() );
		}
	}
}