如果使用某种语言,我需要将文本字段设置为_sans。通常它使用嵌入字体。如何通过AS3将其设置为_sans?
感谢。 乌利
答案 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文件大小。