AS3 - установить текстовое поле на _sans - PullRequest
0 голосов
/ 28 января 2012

Мне нужно установить текстовое поле на _sans, если используется определенный язык. Обычно он использует встроенный шрифт. Как установить _sans через AS3?

Спасибо. Ули

Ответы [ 3 ]

1 голос
/ 29 января 2012

Использование 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";
1 голос
/ 29 января 2012

Чтобы определить текущий язык клиента, вы можете использовать:

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;

Затем создайте и установите текстовый формат текстовых полей, которые вы хотите изменить.Что-то вроде:

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

При желании вы можете установить дополнительные элементы в TextFormat, такие как размер, цвет и т. Д.

0 голосов
/ 07 февраля 2012

Чтобы использовать системный шрифт _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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...