|
|
|||||
Регистрация: Jan 2016
Сообщений: 6
|
Сглаживание текста...SOS
Привет!
Вот моя трудность. Я создаю текстовое поле путём использования TextField. После этого всё вроде бы хорошо (и шрифт и размер и прочие атрибуты), но контуры букв "рваные". Однако создав такой же текстовый слой, но на сцене при помощи мыши и клавы у меня получается всё то же самое, но с идеальными краями. В настройках текстового слоя (если он создан НЕ програмно) есть несколько вариантов сглаживания: 1) Шрифты устройства 2) Растровый текст (без сглаживания) 3) Сглаживание для анимации 4) Сглаживание для читаемости 5) Пользовательское слаживание Текст, созданный при помощи кода выглядит как вариант 2) то есть без сглаживания Подскажите, как быть? Ниже прикрепил скриншот и код, который использую - может кто подскажет? Заранее спасибо! Добавлено через 1 минуту package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFormat; public class CreateText extends Sprite { public function CreateText(CurText:String,FontFace:String,FontSize:Number, isBold:Boolean,isItalic:Boolean,CurColor:uint, hAlign:String,vAlign:String,spacing:Number,leading:Number) { var TempClip:Sprite = new Sprite; var myTF:TextField = new TextField; var myFormat:TextFormat = new TextFormat(FontFace,FontSize,CurColor,isBold,isItalic); myFormat.align = hAlign; myFormat.letterSpacing = spacing; myFormat.leading = leading; myTF.selectable = false; myTF.autoSize = "left"; myTF.antiAliasType = "advanced"; myTF.thickness = 20; myTF.sharpness = 0; myTF.text = CurText; myTF.setTextFormat(myFormat); if (hAlign == "center") { myTF.x = - myTF.textWidth/2; } if (hAlign == "right") { myTF.x = - myTF.textWidth; } if (vAlign == "center") { myTF.y = - myTF.textHeight/2; } if (vAlign == "bottom") { myTF.y = - myTF.textHeight; } TempClip.addChild(myTF); addChild(TempClip); } // Create Text } // CLASS Create Text } // PACKAGE В первом кадре таймлайна пишу следующий код: Последний раз редактировалось UltravibeSan; 02.11.2017 в 01:29. Причина: Поправил текст кода |
|
|||||
UltravibeSan фуфуфу в таймлайне писать
Для того, чтобы управлять thickness и sharpness текста, для начала надо поставить .antiAliasType = AntiAliasType.ADVANCED; Во вторых, текст должен быть заэмбэдин. Скорее всего, если вы его встроите в проект, то он будет отображаться с хорошим сглаживанием без дополнительных настроек. Например, допустим, я положил шрифт в папочку fontы относительно .as файла, в который я хочу встроить шрифт. Тогда: public class Main extends Sprite { [Embed(source="fonts/verdana.ttf", fontName="myVerdana", mimeType="application/x-font", fontWeight="normal", fontStyle="normal", advancedAntiAliasing="true", embedAsCFF="false")] private var MyVerdana:Class; private var _textField:TextField = new TextField(); public function Main() { _textField.antiAliasType = AntiAliasType.ADVANCED; _textField.embedFonts = true; //_textField.sharpness = -50; //_textField.thickness = 200; _textField.defaultTextFormat = new TextFormat('myVerdana', 20); _textField.autoSize = TextFieldAutoSize.LEFT; _textField.text = 'Я очень красивый текст даже без sharpness и thickness, потому что я встроен'; addChild(_textField); } }
__________________
while(live()) { hope(); } Последний раз редактировалось ZergMaster; 02.11.2017 в 10:21. |
|
|||||
Регистрация: Jan 2016
Сообщений: 6
|
Главную мысль почерпнул у Вас - шрифт должен быть эмбеддирован чтобы сглаживание работало. Эмбедировать при помощи тега не захотел. Внедрил руками в FLA-файл и прописал названия классов для каждого шрифта. После этого использовал
В общем, спасибо!!! теперь буквы гладкие и чёткие!!!! |
Часовой пояс GMT +4, время: 16:47. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|