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