TextFormat和TextFields在FlashPlayer外部显示不同的内容

时间:2012-02-14 23:13:52

标签: actionscript-3 flashdevelop

我一直在使用像这样的TextField来渲染游戏的文本。我一直在使用FlashDevelop进行开发,因此使用Flex编译器编译SWF。

我的问题是,当我在浏览器中查看该文本而不是flashplayer(看起来很好)时,该文本不会以适当的格式显示。不同的屏幕分辨率往往会改变它们在浏览器中扭曲文本的方式。为什么会这样?

  var welcomeText:TextField = new TextField();
//formatText creates a TextFormat object, sets those values into TextFormat
//then returns after doing TextField.defaultTextFormat = TextFormatObj;

            formatText(welcomeText, 3, 0xFFFFFF, "Courier");
            welcomeText.width = 385;
            welcomeText.height = 25;
            welcomeText.x = 60;
            welcomeText.y = 60;
            welcomeText.text = "Cogito ergo sum";

2 个答案:

答案 0 :(得分:0)

尝试查看this。我知道我以前在格式化方面遇到了麻烦,所以我设置了一个TextFormat对象,就像你一样,我使用

testfield.SetStyle()

命令也是如此。您可以通过类似于此示例的SetStyle(字体系列,颜色,甚至文本格式)设置许多参数...

TextFormat textStyle;
// Set properties for textstyle
textField.setStyle("textFormat", textStyle);

希望这会有所帮助。我想尽可能多地设置它。

答案 1 :(得分:0)

这很有可能发生,因为您没有嵌入字体。相反,您正在使用他们的系统(或浏览器)可用的Courier字体。虽然这节省了文件大小(字体没有打包在SWF中),但它看起来并不总是那么好。

要使用嵌入字体,您需要做两件事

<强> 1。将TextField的“embedFonts”设置为true

welcomeText.embedFonts = true;

<强> 2。嵌入字体

您可以在AS3中使用元数据来嵌入字体文件,如下所示:

[Embed(source="C:\WINDOWS\Fonts\COURIER.TTF", fontFamily="Courier")]
var _courier:String;
myTextFormat.font = _courier;

注意:您还可以在Flash Professional库中创建字体链接。在库中,选择“New Font ...”,将其命名。完成后,右键单击该字体并选择“Linkage ...”,为其指定一个类名(例如“Courier_Font”)并导出为SWC。将它添加到IDE中的类路径中,可以像这样访问字体:

var _font:Courier_Font = new Courier_Font();
myTextFormat.font = _font.fontName;