Показать сообщение отдельно
Старый 06.10.2016, 21:31
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 1  
Ответить с цитированием
in4core
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
По умолчанию Изменение размера поля - динамически

Коллеги, очень сложный и важный вопрос, прошу помощи.

Задача следующая - из swf подгружается графика с текстовыми полями. Обычные поля выравненные по центру, размером скажем 20pt . Задача уменьшать размер шрифта или увеличивать в зависимости сколько символов влезает, вообщем чтобы текст не был обрезанным.

Сделал вот такой вот метод для этого :

Код AS3:
public static function updateFormat(tf:TextField, size:int):void
{
	var format:TextFormat = tf.getTextFormat();
 
	format.size = size;
	tf.setTextFormat( format );
}
 
public static function gen(tf:TextField , useY:Boolean = false):void
{
	var format:TextFormat = tf.getTextFormat();
	var initSize:int = int(format.size);
 
	if (tf.textWidth > tf.width - 20)
	{
		while ( tf.textWidth > tf.width - 20 )
		{
			initSize--;
			if(useY) tf.y += 1;
			updateFormat(tf, initSize);
		}
	}
	else if (tf.textWidth < tf.width - 20)
	{
		while ( tf.textWidth < tf.width - 20 )
		{
			initSize++;
			if(useY) tf.y += 1;
			updateFormat(tf, initSize);
		}
	}
}
Результат вроде есть, но сами понимаете не очень точный. Но это пол беды. Главная беда в том, что текст при изменении - меняет свой формат обратно, так как он подгруженный и формат у него вроде как изменить нельзя навсегда ( если не ошибаюсь) . А в некоторым моменты врмени текст меняется как счетчик скажем за 1 сек от 0 до 100. И каждые 30 мс вызывать метод описанный выше - будет затратно.
Очень нужна ваша помощь. Спасибо
__________________
Марк Tween


Последний раз редактировалось dimarik; 10.10.2016 в 21:01. Причина: форматирование кода