Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.11.2017, 01:00
UltravibeSan вне форума Посмотреть профиль Отправить личное сообщение для UltravibeSan Найти все сообщения от UltravibeSan
  № 1  
Ответить с цитированием
UltravibeSan

Регистрация: Jan 2016
Сообщений: 6
По умолчанию Сглаживание текста...SOS

Привет!
Вот моя трудность. Я создаю текстовое поле путём использования TextField. После этого всё вроде бы хорошо (и шрифт и размер и прочие атрибуты), но контуры букв "рваные". Однако создав такой же текстовый слой, но на сцене при помощи мыши и клавы у меня получается всё то же самое, но с идеальными краями. В настройках текстового слоя (если он создан НЕ програмно) есть несколько вариантов сглаживания:
1) Шрифты устройства
2) Растровый текст (без сглаживания)
3) Сглаживание для анимации
4) Сглаживание для читаемости
5) Пользовательское слаживание
Текст, созданный при помощи кода выглядит как вариант 2) то есть без сглаживания
Подскажите, как быть? Ниже прикрепил скриншот и код, который использую - может кто подскажет?
Заранее спасибо!

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


Последний раз редактировалось UltravibeSan; 02.11.2017 в 01:29. Причина: Поправил текст кода
Старый 02.11.2017, 01:54
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 2  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
UltravibeSan фуфуфу в таймлайне писать
Для того, чтобы управлять thickness и sharpness текста, для начала надо поставить .antiAliasType = AntiAliasType.ADVANCED;
Во вторых, текст должен быть заэмбэдин. Скорее всего, если вы его встроите в проект, то он будет отображаться с хорошим сглаживанием без дополнительных настроек. Например, допустим, я положил шрифт в папочку fontы относительно .as файла, в который я хочу встроить шрифт. Тогда:

Код AS3:
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.
Старый 02.11.2017, 04:33
UltravibeSan вне форума Посмотреть профиль Отправить личное сообщение для UltravibeSan Найти все сообщения от UltravibeSan
  № 3  
Ответить с цитированием
UltravibeSan

Регистрация: Jan 2016
Сообщений: 6
Главную мысль почерпнул у Вас - шрифт должен быть эмбеддирован чтобы сглаживание работало. Эмбедировать при помощи тега не захотел. Внедрил руками в FLA-файл и прописал названия классов для каждого шрифта. После этого использовал
Код AS3:
var myFont:Font = new ubuntuRegular();
myFormat:TextFormat = new TextFormat(myFont,FontSize,CurColor) и т.д.
В общем, спасибо!!! теперь буквы гладкие и чёткие!!!!

Создать новую тему Ответ Часовой пояс GMT +4, время: 06:37.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 06:37.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.