您可以使用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
。
感謝您的回答:)不幸的是,這給了我的字體(一個字符串)的名稱,而不是字體的關聯類對象。我試過在字體名稱上調用getDefinition,並且崩潰。你知道一種使用這個String來獲得類的方法嗎? – Sean
@Sean更新了答案,找到字體類 – Moorthy
謝謝。看起來你和我做過的地方差不多。真正的問題是如何獲得「CustomFont」而不知道它被稱爲「CustomFont」。 – Sean