getTextFormat
関数を使用して、テキスト フィールドのフォント名を取得できます。txt
次に、テキストフィールドを考えてみましょう
var format:TextFormat = txt.getTextFormat();
trace(format.font);
いくつかの調査の後、私はこの解決策を見つけました。これで問題が解決する可能性があります。
import flash.text.TextField;
import flash.text.TextFormat;
import flash.utils.getQualifiedClassName;
import flash.text.Font;
import flash.display.Loader;
import flash.events.Event;
import flash.net.URLRequest;
var font:Font;
var txt:TextField;
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);
loader.load(new URLRequest("sub_fla.swf"));
function onLoaded(e:Event){
var cl:Class = e.currentTarget.applicationDomain.getDefinition("CustomFont") as Class;
Font.registerFont(cl);
trace(cl);
txt = new TextField();
this.addChild(txt);
txt.text = "Moorthy";
var format:TextFormat = new TextFormat();// = txt.getTextFormat();
font = new cl();
format.font = font.fontName;
txt.setTextFormat(format);
enumerateFonts();
}
function enumerateFonts(){
var embeddedFonts:Array = Font.enumerateFonts(false);
embeddedFonts.sortOn("fontName", Array.CASEINSENSITIVE);
trace("---->"+embeddedFonts.indexOf(txt.getTextFormat().font));
for(var i:int = 0;i<embeddedFonts.length;i++){
font = embeddedFonts[i];
trace("embeddedFonts["+i+"]:"+font.fontName+":"+font);
if(txt.getTextFormat().font == font.fontName){
trace("My font class is '"+getQualifiedClassName(font) +"'");
}
}
}
リストに表示されるフォントを登録することを忘れないでくださいenumerateFonts
。それ以外の場合は、カスタム クラスではなく、デフォルトのフォント クラスを取得します。
または、(テキスト フィールドが配置されている) ムービークリップに変数を追加して、フォント クラスまたはフォント クラス名を保持することもできます。
例:holder
がテキストフィールドを含むムービークリップである場合、次を使用します
holder.fontClass = cl
それ以外の
Font.registerFont
そして、あなたは単にフォントクラスを取得することができます
txt.parent.fontClass
もしそうなら、このようにする必要はありませんenumerateFonts
。