2012-01-28 52 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文件大小。