2012-01-28 51 views
0

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

谢谢。 乌利

回答

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"; 
+0

我得到一个错误**调用一个可能未定义的方法DinReg **什么是DinReg? – Uli 2012-01-29 19:31:11

+0

这是我已经嵌入到库中的字体的名称。您需要将自己的字体嵌入到您的库中,并为其指定名称并使用该字体代替dinreg – crooksy88 2012-01-29 20:38:11

+0

非常感谢!它正在工作! – Uli 2012-01-29 22:05:15

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; 

然后创建和设置文本格式您想要更改的textFields。喜欢的东西:

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

您还可以选择设置在的TextFormat额外的东西,如大小,颜色等。

+0

我不想加载字体 - 我只想使用_sans系统字体。如何将文本行为更改为_sans? – Uli 2012-01-28 22:02:36

+0

请参阅编辑,如果有错别字或者我错过了让我知道的事情。 – ToddBFisher 2012-01-28 22:30:20

+0

字体部分不起作用。字体保持不变。 – Uli 2012-01-28 23:05:53

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文件大小。