AS3 - 将文本字段设置为_sans

时间:2012-01-28 19:45:20

标签: actionscript-3 text fonts

如果使用某种语言,我需要将文本字段设置为_sans。通常它使用嵌入字体。如何通过AS3将其设置为_sans?

感谢。 乌利

3 个答案:

答案 0 :(得分:1)

要检测客户端的当前语言,您可以使用:

flash.system.Capabilities.language; //in my case returns "en"

要在运行时动态加载字体,有一些很好的教程,包括这个:http://bryanlangdon.com/blog/2007/03/22/loading-fonts-dynamically-in-actionscript-2-and-3/

我希望有所帮助。

修改

要动态更改已嵌入的字体,请先为各个文本字段启用字体嵌入:(未经测试的代码)

myTextField_txt.embedFonts = true;

然后创建并设置要更改的textField的文本格式。类似的东西:

var myformat:TextFormat = new TextFormat();
myformat.font = "_sans";
myTextField_txt.setTextFormat(myformat);

您可以选择在TextFormat中设置其他内容,例如大小,颜色等。

答案 1 :(得分:1)

使用system.Capabilities检测系统语言设置可能不是最佳路径。例如你可能在印度工作的英语人士想要使用你的文件。

您可能希望使用某种语言选择选项。

在这个例子中,我设置了一个变量(alphabetToUse),无论选择的语言是否拉丁语。

var myFont:Font;
var alphabetToUse:String;

myFont = new DinReg();

//for latin
var myFormat:TextFormat = new TextFormat();
myFormat.size = 14;
myFormat.align = TextFormatAlign.LEFT;
myFormat.font = myFont.fontName;

//for anything else
var myDefaultFormat:TextFormat = new TextFormat();
myDefaultFormat.size = 14;
myDefaultFormat.align = TextFormatAlign.LEFT;
myDefaultFormat.font = "_sans";


var myText:TextField = new TextField();
myText.type = TextFieldType.DYNAMIC;
myText.antiAliasType = AntiAliasType.ADVANCED;
myText.textColor = 0xFFFFFF;
myText.multiline = true;


if(alphabetToUse == "latin") {
    myText.embedFonts = true;
    myText.defaultTextFormat = myFormat;
} else {
    myText.embedFonts = false;
    myText.defaultTextFormat = myDefaultFormat;
}

myText.border = false;
myText.wordWrap = true;
myText.width = 345;
myText.height = 28;
myText.x = 0;
myText.y = 0;

addChild(myText);

myText.htmlText = "some text";

答案 2 :(得分:0)

要使用系统_sans字体,请使用以下代码:

var tf : TextField = new TextField();  // create a text field
var fmt : TextFormat = new TextFormat(); // create a text format

with(fmt) {
  font = "_sans";  // using sans results in the use of arial on windows and helvetica on MacOS
  size = 12;
  color = 0xFFFFFF;  // white
}

with (tf) { 
  embedFonts = false;   // if you skip this you'll get Times (at least in Windows)
  defaultTextFormat = fmt;
}

不嵌入字体导致较小的swf>>下载时间更短,流量更少。 特别是如果你想能够使用不同的字符集(俄语,希腊语,中文),嵌入可能会导致swf文件大小。