代码之家  ›  专栏  ›  技术社区  ›  Andy Moore

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

  •  5
  • Andy Moore  · 技术社区  · 16 年前

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

    我可以看到textfield仍然存在,但它的大小已经缩小到只有几个像素。我想可能是因为自动调整把事情搞砸了,

        //year.autoSize = ...;
    

    同样的问题。我想它可能是嵌入的,就把这行注释掉了:

        //year.embedFonts = true;
    

    textfield返回工作状态,但(可以理解)失去了它进行alphas和旋转的能力。

    知道怎么回事吗?

    4 回复  |  直到 14 年前
        1
  •  13
  •   grapefrukt    16 年前

    我写了一篇长篇大论的文章,阐述了为什么这行不通的可能原因。但当我重新阅读你的代码时,我想我发现了错误。 更改行:

    year.setTextFormat(newFormat);
    

    到:

    year.defaultTextFormat = newFormat;
    

    就这样!

        2
  •  3
  •   hannes    15 年前

    由于defaulttextformat不起作用,其他两个提示的组合也起作用。

    import flash.text.Font;
    

    在您的构造函数中:

    Font.registerFont(MoolEmbed)
    

    然后

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

        3
  •  0
  •   greggreg    16 年前

    您需要在全局字体列表中注册字体。

    进口:

    import flash.text.Font;
    

    在您的构造函数中:

    Font.registerFont(MoolEmbed)
    
        4
  •  0
  •   heavilyinvolved    16 年前

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