Embedding Fonts in AS3 - Dynamic Text Field disappears

拟墨画扇 提交于 2019-12-21 17:06:38

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!