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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 08.07.2009, 13:58
murz вне форума Посмотреть профиль Отправить личное сообщение для murz Найти все сообщения от murz
  № 1  
Ответить с цитированием
murz
[+1 10.12.10]

Регистрация: Feb 2006
Сообщений: 148
Отправить сообщение для murz с помощью ICQ
По умолчанию TextField обрезает литеры

Всем привет.
Как вылечить проблему указанной в теме письма?

На рисунке в текстовое поле вписана литера "U", гарнитура Tahoma, начертание Italic. Шрифт встроенный.
TextField обрезает ее с права, как быть?
Изображения
 

Старый 08.07.2009, 14:33
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Не уверен... но, а вдруг получится с
http://livedocs.adobe.com/flash/9.0/...arBoundaries()
и сравнить с размерами поля?
__________________
Hell is the possibility of sanity

Старый 08.07.2009, 15:29
murz вне форума Посмотреть профиль Отправить личное сообщение для murz Найти все сообщения от murz
  № 3  
Ответить с цитированием
murz
[+1 10.12.10]

Регистрация: Feb 2006
Сообщений: 148
Отправить сообщение для murz с помощью ICQ
Попробовал вариант с размерами одно символа и вариант с метриками. Работают одинаково(((
Не работают эти варианты.
Код AS3:
var tf:TextField = new TextField();
tf.autoSize = TextFieldAutoSize.LEFT;
tf.text = "U";
tf.border=true;
tf.setTextFormat(new TextFormat("Tahoma",50,0, false, false));
trace("Italic, disabled",tf.getBounds(this), tf.getCharBoundaries(0));
addChild(tf);
tf.setTextFormat(new TextFormat("Tahoma",50,0, false, true));
trace("Italic enabled",tf.getBounds(this), tf.getCharBoundaries(0), "\n Metrics:","w: "+tf.getLineMetrics(0).width);
 
//Italic, disabled (x=0, y=0, w=37, h=64) (x=2, y=2, w=33, h=60)
//Italic enabled (x=0, y=0, w=37, h=64) (x=2, y=2, w=33, h=60) 
// Metrics: w: 33
Забыл сказать поле работает в режиме TextFieldAutoSize.LEFT, так что устанавливать ему ширину нельзя

Старый 08.07.2009, 15:59
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Тогда, боюсь, прийдется самому организовывать автосайз... Т.е. установить полю какой-нибудь изначальный большой размер, так чтобы буква точно влезла, потом вытащить ее метрики и соответственно уменьшить поле... вряд ли есть какой-то другой метод... Еще, как вариант - посмотреть в сторону новой текст-енджин - может они по-другому считают размер буков?
Да, и еще такой момент. Иногда в шрифтах нет курсивного начертания, и в таких случаях флеш может имитировать курсив просто "наклонив" прямые буквы, тогда, я подозреваю, и метрики не будут отображать реальной ситуации... теоретически можно попробовать рассчитать, на сколько увеличится ширина знака, если его наклонить, зная градус наклона - но это уже что-то из области ядерной физики...
__________________
Hell is the possibility of sanity

Старый 09.07.2009, 14:44
SunShadow вне форума Посмотреть профиль Отправить личное сообщение для SunShadow Найти все сообщения от SunShadow
  № 5  
Ответить с цитированием
SunShadow
 
Аватар для SunShadow

Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
а попробуйте autoSize выставлять после того как текст присвоите текстовому полю. Иногда помогает
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ

Старый 09.07.2009, 15:43
SunShadow вне форума Посмотреть профиль Отправить личное сообщение для SunShadow Найти все сообщения от SunShadow
  № 6  
Ответить с цитированием
SunShadow
 
Аватар для SunShadow

Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
Может дело в том что вы сами шрифты не встроили? Вот я примерчик накидал, со встроенными шрифтами выглядит немножко лучше.
Подставляем именно встроенный шрифт и обязательно указываем что он
Код AS3:
embedFonts = true;
Хотя надо сказать что текст в рамки поля не всегда вписывается( Но зато ничего не обрезается, изображение выводится целиком, просто значки выходят за границу текстового поля.)))
Вложения
Тип файла: rar TestFont.rar (35.4 Кб, 61 просмотров)
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ


Последний раз редактировалось SunShadow; 09.07.2009 в 15:49.
Старый 10.07.2009, 18:10
murz вне форума Посмотреть профиль Отправить личное сообщение для murz Найти все сообщения от murz
  № 7  
Ответить с цитированием
murz
[+1 10.12.10]

Регистрация: Feb 2006
Сообщений: 148
Отправить сообщение для murz с помощью ICQ
Спасибо за внимание к теме. Вопрос , "обрезания Литеры", решился, у поля было выставлено
Код AS3:
AntiAliasType.ADVANCED
GridFitType.PIXEL
после их отключения. стало все как в примере SunShadow, но теперь за литерой остается шлейф из пикселей,при перетаскивании,((( Шлеф - дифект, начинается от края который выступает за текстовое поле,
далаю так
Код AS3:
_tf.cacheAsBitmap = true;
Литера опять начинает обрезаться, шлейф пропадает)))

Старый 12.07.2009, 14:04
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 8  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Может тогда завернуть текстовое поле в спрайт?
__________________
Hell is the possibility of sanity

Старый 13.07.2009, 16:35
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 9  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Может тогда завернуть текстовое поле в спрайт?
По идее действительно должно помочь. TextField некорректно возвращает свои размеры. Если текст всегда однострочный, также можно отнаследоваться от TextField и переопределить геттер width. В котором отдавать пересчитанную с помощью getCharBoundaries() ширину.
Тогда правда прийдется обойтись без автосайза.

Старый 13.07.2009, 17:03
crazyone вне форума Посмотреть профиль Отправить личное сообщение для crazyone Найти все сообщения от crazyone
  № 10  
Ответить с цитированием
crazyone
 
Аватар для crazyone

блогер
Регистрация: Nov 2007
Адрес: Киев
Сообщений: 557
Записей в блоге: 2
А можно еще попробовать отрисовать текст в битмапу и посчитать его размеры
при помощи BitmapData.getColorBoundsRect();
Весело и задорно получится =))

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

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

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


 


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


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