TextField autoSize + выделение курсивом последнего символа - PullRequest
1 голос
/ 04 октября 2009

В actionScript 3 мой TextField имеет:

  • CSS стиль
  • встроенные шрифты
  • textAlign: CENTER
  • autoSize: CENTER

... при использовании курсива очень правильный символ слегка обрезается (особенно заглавные буквы). В основном кажется, что он не может определить правильный размер.

Раньше у меня была эта проблема, но я просто удивился, есть ли хороший обходной путь (вместо проверки textWidth или смещения текста и т.

Ответы [ 3 ]

3 голосов
/ 27 октября 2012

Инициализируйте textField как обычно, используя многострочный, авторазмер, htmlText ...

Тогда сделайте этот маленький трюк:

// saving wanted width and height plus 1px to get some space for last char
var savedWidth = myTextField.width + 1;
var savedHeight = myTextField.height + 1;

// removing autoSize, wich is the origin of the problem i think                 
myTextField.autoSize = "none";      

// now manually autoSizing the textField with saved values          
myTextField.width = savedWidth;
myTextField.height = savedHeight;
1 голос
/ 06 октября 2009

Не то чтобы это было для вас большим утешением, но у Flash иногда возникают проблемы с этой, казалось бы, простой задачей. Стилизация CSS html TextField была хорошим дополнением, но она вызвала головную боль при рендеринге текста. На самом деле я очень редко использую CSS для стилизации текста по этой причине. Я могу только представить, что объединение полужирных , курсивов и граней нормального типа в HTML приводит к тому, что Flash неправильно использует некоторые вычисления ширины, что приводит к тому, что autoSize устанавливает маску чуть-чуть короткая. Я очень надеюсь, что новый движок рендеринга текста в Flash Player 10 наконец-то исправит эти проблемы (теоретически это выглядит лучше).

Итак, мое решение - это никогда для использования HTML, за исключением случаев, когда мне требуется <a> ссылки в моем тексте ... и там даже есть некоторые хитрые проблемы со сдвигом текста , В этих случаях я избегаю смешивать разные веса шрифта и стили шрифта в одном текстовом поле. Во всех остальных случаях я использую TextFormat непосредственно на TextField.

Полагаю, если вы не можете выйти из своей текущей архитектуры (по какой-то причине), вы можете попробовать добавить &nbsp; в конец строк, закодированных в html. Или вы можете вручную установить ширину поля и не полагаться на autoSize (как вы уже упоминали). Но если вы будете придерживаться маршрута CSS / HTML, вы можете найти другое новое и болезненное ограничение именно тогда, когда вы этого не хотите.

0 голосов
/ 05 октября 2009

У меня были проблемы с TextField масками, которые ведут себя по-разному в предварительном просмотре Flash и в реальном плагине браузера. Обычно, и это странно для меня, это будет выглядеть более корректно в браузере. Вы пытались запустить swf в браузере, чтобы увидеть, является ли проблема скорее раздражением, чем постоянной проблемой?

Я сказал это:
Мой идеальный подход к решению этой проблемы заключается в том, чтобы прикрепить событие изменения к TextField, которое всегда добавляет пробел после последнего символа поля. И затем, чтобы не забыть обрезать это пространство при использовании значения.

Но это не принимало во внимание, что это, вероятно, не имеет события change и что это текстовое поле, отображаемое в формате HTML. Чтобы добавить завершающий пробел в текстовое поле HTML, снова добавьте &nbsp;, но это не решает проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...