问题
This is hopefully a new problem or just me missing something obvious. Please help! I'm embedding a font into my AS3 application. I'm doing everything by-the-book and it half-works.
In my main class,
[Embed(source="Art/moolbor.ttf", fontFamily="MoolEmbed",
mimeType="application/x-font")]
var MoolEmbed:Class;
Then later on in my code:
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";
This works perfectly fine, and the text shows up beautifully. I can rotate it, alphas apply to it, and it's nicely antialiased. The problem is that the textfield is dynamic - Later on in the code:
year.text = "And a second hello world";
As soon as this code is triggered, the textfield disappears completely. I turn on
year.border = true;
and I can see that the textfield is still there, but it's size has shrunk down to just a few pixels. Thinking perhaps it was the autoSize messing things up,
//year.autoSize = ...;
Same problems. Thinking it might be embedding, I commented out the line:
//year.embedFonts = true;
And the textfield returns to working status, but (Understandably) loses it's ability to do alphas and rotations.
Any idea what's going on?
回答1:
I wrote a long talkative entry on possible reasons as why this would not work. But as I re-read you code I think i spotted the error. Change the row:
year.setTextFormat(newFormat);
To:
year.defaultTextFormat = newFormat;
That should do it!
回答2:
as defaultTextFormat didnt work for, a combination of the other two tips worked
import flash.text.Font;
in your constructor:
Font.registerFont(MoolEmbed)
and then
After you set the text property for the second time make sure you call setTextFormat(newFormat) again.
回答3:
you need to register your font with the global font list.
import:
import flash.text.Font;
in your constructor:
Font.registerFont(MoolEmbed)
回答4:
After you set the text property for the second time make sure you call setTextFormat(newFormat) again.
来源:https://stackoverflow.com/questions/1744541/embedding-fonts-in-as3-dynamic-text-field-disappears