UltravibeSan
02.11.2017, 01:00
Привет!
Вот моя трудность. Я создаю текстовое поле путём использования 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
Добавлено через 7 минут
В первом кадре таймлайна пишу следующий код:
import CreateText;
addChild(new CreateText("Test record","Ubuntu",36,true,false,0xFFFFFF,"center","center",-1,0));
Вот моя трудность. Я создаю текстовое поле путём использования 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
Добавлено через 7 минут
В первом кадре таймлайна пишу следующий код:
import CreateText;
addChild(new CreateText("Test record","Ubuntu",36,true,false,0xFFFFFF,"center","center",-1,0));