在AS3中嵌入字体 - 动态文本字段消失

时间:2009-11-16 20:06:54

标签: actionscript-3 fonts embedding

这可能是一个新问题,或者只是我遗漏了一些明显的问题。请帮忙!我在我的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;

我可以看到文本字段仍然存在,但它的大小缩小到几个像素。想想也许是autoSize搞砸了,

    //year.autoSize = ...;

同样的问题。考虑到它可能是嵌入式,我评论了这一行:

    //year.embedFonts = true;

文本字段返回工作状态,但(可理解地)失去了执行alpha和旋转的能力。

知道发生了什么事吗?

4 个答案:

答案 0 :(得分:13)

我写了一篇长篇健谈的条目,说明为什么这不起作用的可能原因。但是当我重新阅读你的代码时,我想我发现了错误。 更改行:

year.setTextFormat(newFormat);

要:

year.defaultTextFormat = newFormat;

应该这样做!

答案 1 :(得分:3)

作为defaultTextFormat不起作用,其他两个提示的组合起作用

import flash.text.Font;

在你的构造函数中:

Font.registerFont(MoolEmbed)

然后

第二次设置text属性后,请确保再次调用setTextFormat(newFormat)。

答案 2 :(得分:0)

您需要使用全局字体列表注册字体。

导入:

import flash.text.Font;

在你的构造函数中:

Font.registerFont(MoolEmbed)

答案 3 :(得分:0)

第二次设置text属性后,请确保再次调用setTextFormat(newFormat)。