Экшнскрипт:Как повернуть текстовое поле?
-
12-09-2019 - |
Вопрос
Как повернуть текстовое поле в Actionscript 3.0?Как только я меняю свойство поворота текстового поля, оно не отображается.
например:
var txtFld:TextField = new TextField();
txtFld.x = 100;
txtFld.y = 100;
txtFld.width = 300;
txtFld.height = 300;
txtFld.text = "Test String";
txtFld.rotation = 90;
addChild(txtFld);
Решение
Еще немного информации в поддержку Кристофа Херремана: ActionScript — поворот текста
Другие советы
Чтобы увидеть повернутый текст, вам придется встроить шрифт.
альтернативой является копирование текстового поля в BitmapData
с использованием BitmapData::draw
а затем создав Bitmap
содержащий результат и добавляющий его в список отображения вместо исходного TextField
...
у этого есть большое преимущество: вам не нужно вставлять шрифт, что уменьшает размер файла SWF...OTOH, вы потеряете всю интерактивность TextField`а, а SWF потребуется больше оперативной памяти при воспроизведении, но последнее не слишком существенно...
чтобы текст выглядел гладким, установите Bitmap::smoothing
к true
...также полезно, если вы визуализируете изображение в более высоком разрешении...псевдо-антиалиасинг, так сказать...при рисовании текста передайте Matrix
увеличить в 2 раза и уменьшить Bitmap
в 2 раза...так будет лучше выглядеть...
приветствие
back2dos
Я просто хотел добавить свой опыт к этому вопросу.Я тоже хотел повернуть текст.
Сначала я встроил шрифт, используя только ActionScript.
Embed(source="C:\\WINDOWS\\Fonts\\CALIBRI.TTF", fontFamily="Calibri")]
public static const FONT_CALIBRI:Class;
...
var font:Font = new Global.FONT_CALIBRI as Font;
//Font.registerFont(Global.FONT_CALIBRI); //I tried various other things...
Но каждый раз, когда я устанавливаю embedFonts = true
, текст исчезнет.Наконец я сдался и внедрил шрифт с помощью Flash.
var font:Font = new FontClass as Font; //FontClass was exported from Flash IDE
Наконец-то это сработало.
var textFormat:TextFormat = new TextFormat(font.fontName);
textField = new TextField();
textField.defaultTextFormat = textFormat; //must be before setting the text
textField.embedFonts = true; //needed to rotate fonts
textField.autoSize = TextFieldAutoSize.CENTER;
textField.antiAliasType = flash.text.AntiAliasType.ADVANCED;
textField.text = ("TESTING")
this.addChild(textField);
О, как я ненавижу использовать Flash IDE для чего-либо.Если кто-то смог сделать это без использования Flash, поделитесь, пожалуйста!
Это то, что сработало для меня.
В CS5 мне нужно было изменить настройку в диалоговом окне «Встраивание шрифтов», чтобы она работала.
Чтобы открыть диалоговое окно «Внедрение шрифта», нажмите кнопку «Встроить» на панели «Символ» или дважды щелкните символ шрифта в библиотеке.
Затем выберите шрифт, который вы хотите вращать, и щелкните вкладку Actionscript.
Наконец, установите флажок «Экспорт для Actionscript».Оставьте значения по умолчанию и нажмите «ОК».
Ниже приведен код, который я использовал:
textField = new TextField();
textField.autoSize = TextFieldAutoSize.LEFT;
textField.embedFonts = true;
format.font = "Arial"; // Or whatever the name of your font is in the embed dialog
format.size = 24;
textField.defaultTextFormat = format;
addChild(textField);
Если затем применить поворот к этому полю через AS, я все равно увижу шрифт.
var txtFld:TextField = new TextField();
txtFld.x = 100;
txtFld.y = 100;
txtFld.width = 300;
txtFld.height = 300;
txtFld.text = "Test String";
txtFld.embedFonts = true; // to embed the font ... now roation works
txtFld.rotation = 90;
addChild(txtFld);