AS3 Scale Text Function вызывает конфликт с форматом HTML текстового поля - PullRequest
2 голосов
/ 01 июля 2011

Здравствуйте, ребята! Я использую приведенную ниже функцию для масштабирования динамического размера шрифта во время выполнения следующим образом:

function scaleTextToFitInTextField( txt : TextField ):void{
 var f:TextFormat = txt.getTextFormat();
 f.size = ( txt.width > txt.height ) ? txt.width : txt.height;
 txt.setTextFormat( f );

 while ( txt.textWidth > txt.width - 4 || txt.textHeight > txt.height - 6 ){               
    f.size = int( f.size ) - 1;
    txt.setTextFormat( f );
}
}

scaleTextToFitInTextField( tf );
// tf is a dynamic multiline textfield on stage with dimension 150x150

Идея состоит в том, что когда текстовое поле заполняется внешним контентом, оно уменьшает размер шрифта, чтобы вместить весь текст в текстовое поле. Эта работа до сих пор.

Моя самая большая проблема сейчас заключается в том, что эта функция мешает форматированию html текстового поля. Например; Загружаю внешний html:

<font size="-2">this text is way</font><br><font size="+5">TOO BIG</font><br>to fit in this box, but I'll give it a try!

С помощью функции масштабирования, примененной к текстовому полю, форматирование html (изменение размера) не работает, но если я удаляю функцию масштабирования, оно работает.

В идеале я хочу иметь возможность масштабировать шрифт, если текст слишком большой, чтобы уместиться, и иметь возможность применять формат html.

Кто-нибудь, пожалуйста, помогите. Я использую CS5

Большое спасибо.

1 Ответ

0 голосов
/ 01 июля 2011

Это может сработать, если вы добавите htmlText в <![CDATA[]]>:

<![CDATA[<font size="-2">this text is way</font><br><font size="+5">TOO BIG</font><br>to fit in this box, but I'll give it a try!]]>

В противном случае, вы можете попробовать обернуть TextField в Sprite и вместо этого масштабировать Sprite? Как вы масштабируете динамическое текстовое поле во флэш-памяти от центральной точки, используя as3?

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