2009-11-16 56 views
5

這是希望有一個新問題,或者只是我錯過了一些明顯的東西。請幫忙!我正在將字體嵌入到AS3應用程序中。我正在做所有的事情,它是一半的工作。在AS3中嵌入字體 - 動態文本字段消失

在我的主類,

[Embed(source="Art/moolbor.ttf", fontFamily="MoolEmbed", 
     mimeType="application/x-font")] 
    var MoolEmbed:Class; 

再後來就在我的代碼:

var newFormat:TextFormat = new TextFormat(); 
    newFormat.font = "MoolEmbed"; 
    newFormat.size = 20; 
    newFormat.color = 0xFCF374; 

    year.autoSize = TextFieldAutoSize.LEFT; 
    year.text = "Hello World"; 
    year.embedFonts = true; 
    year.setTextFormat(newFormat); 
    year.antiAliasType = "advanced"; 

這工作完全正常,和精美的文字顯示出來。我可以旋轉它,alphas適用於它,並且它很好抗鋸齒。問題在於文本字段是動態的 - 稍後在代碼中:

year.text = "And a second hello world"; 

只要此代碼被觸發,文本字段就會完全消失。我打開

year.border = true; 

我可以看到textfield仍然存在,但它的大小縮小到幾個像素。思考也許這是autoSize搞砸了,

//year.autoSize = ...; 

同樣的問題。思考它可能會嵌入,我註釋掉行:

//year.embedFonts = true; 

而且文本框返回到工作狀態,但(可以理解)失去它做阿爾法和旋轉能力。

任何想法是怎麼回事?

回答

13

我寫了一個很長的談話條目,可能的原因是爲什麼這不起作用。但是當我重新閱讀你的代碼時,我想我發現了這個錯誤。 更改該行:

year.setTextFormat(newFormat); 

要:

year.defaultTextFormat = newFormat; 

應該這樣做!

+0

非常感謝!以前從未使用defaultTextFormat屬性...每天學習新內容! – 2009-11-18 19:56:19

+1

我有幾乎相同的問題,這個解決方案仍然不是真的爲我工作。 Fonts.enamurate確實顯示我的嵌入字體。 – 2011-07-27 11:39:16

+0

謝謝,救了我分配工作。但是,在我的情況下,我不得不添加而不是改變。 – Frank 2012-09-24 18:59:14

0

您需要使用全局字體列表註冊您的字體。

進口:

import flash.text.Font; 
在構造函數

Font.registerFont(MoolEmbed) 
+0

沒有骰子;行爲不會改變。 :C – 2009-11-16 21:12:13

0

設置第二次text屬性之後確保你調用setTextFormat(newFormat)一次。

3

爲,另外兩個提示的組合defaultTextFormat沒有工作在構造函數工作

import flash.text.Font; 

Font.registerFont(MoolEmbed) 

然後

在設置文本屬性爲第二次確保你再次調用setTextFormat(newFormat)。