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

6
希望这是一个新问题,或者只是我错过了一些明显的东西。请帮忙!我正在将字体嵌入到我的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";

这个很完美,文本显示得非常漂亮。我可以旋转它,透明度也能应用到它上面,而且它的抗锯齿效果也很好。问题是textfield是动态的 - 在代码的后面:

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

一旦触发此代码,文本字段将完全消失。我打开
    year.border = true;

我发现这个文本框还在,但它的大小已经缩小到只有几个像素。考虑可能是autoSize搞砸了一些东西。

    //year.autoSize = ...;

遇到同样的问题。我认为可能是嵌入问题,于是我注释掉了这行代码:

    //year.embedFonts = true;

文本字段恢复工作状态,但(可以理解)失去了进行字母和旋转的能力。

有什么想法?

4个回答

13
我曾写了一篇详细的论述,解释为什么这样做不起作用。但是当我重新阅读了你的代码后,我觉得我发现了错误。 请更改该行:


请更改该行:

year.setTextFormat(newFormat);
year.defaultTextFormat = newFormat;

那应该就可以了!


非常感谢!以前从未使用过defaultTextFormat属性...每天都会学到新东西! - Andy Moore
1
我遇到了差不多相同的问题,这个解决方案对我来说还是不太起作用。Fonts.enamurate确实显示了我的嵌入字体。 - Fahim Akhter
谢谢,这节省了我很多工作。然而,在我的情况下,我不得不添加而不是更改。 - Frank
十年过去了,这篇帖子仍然很有用。我按照这里的相同指示进行操作,但将字体设置为抗锯齿是让它对我起作用的关键。谢谢大家。 - FlashV8

3

由于默认文本格式未生效,结合其他两个提示的方法才起作用。

import flash.text.Font;

在你的构造函数中:

Font.registerFont(MoolEmbed)

然后

在第二次设置文本属性后,确保再次调用setTextFormat(newFormat)。


0
你需要将字体注册到全局的字体列表中。 导入:
import flash.text.Font;

在你的构造函数中:

Font.registerFont(MoolEmbed)

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接