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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.10.2016, 21:31
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 1  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для 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. Причина: форматирование кода
Старый 06.10.2016, 23:02
Bletraut вне форума Посмотреть профиль Отправить личное сообщение для Bletraut Найти все сообщения от Bletraut
  № 2  
Ответить с цитированием
Bletraut
 
Аватар для Bletraut

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 566
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Код AS3:
Но это пол беды. Главная беда в том, что текст при изменении - меняет свой формат обратно, так как он подгруженный и формат у него вроде как изменить нельзя навсегда ( если не ошибаюсь) . А в некоторым моменты врмени текст меняется как счетчик скажем за 1 сек от 0 до 100. И каждые 30 мс вызывать метод описанный выше - будет затратно.
Код AS3:
		{
			var format:TextFormat = tf.getTextFormat();
 
			format.size = size;
			tf.defaultTextFormat = format;
		}
__________________
Я заклинаю вас действовать иначе.

Старый 06.10.2016, 23:50
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 3  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
да да. только после такой операции флешка виснет, как на бесконечном цикле
__________________
Марк Tween

Старый 07.10.2016, 00:25
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 4  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
может в загружаемой флэшке попробовать allowDomain("*");
ПС:А где сказано что текст формат у загруженных флэшек становится неизменным?

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

Регистрация: Jan 2006
Адрес: Москва (Нижний Новгород)
Сообщений: 229
Записей в блоге: 1
Отправить сообщение для KBAC с помощью Skype™
Подпишись на change и вызывай свой gen
__________________
Будь проще.

Старый 07.10.2016, 15:48
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 6  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
КВАС - change для инпута, чтоб вы знали.
__________________
Марк Tween

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

Регистрация: Jan 2006
Адрес: Москва (Нижний Новгород)
Сообщений: 229
Записей в блоге: 1
Отправить сообщение для KBAC с помощью Skype™
Точно. Я и забыл
__________________
Будь проще.

Старый 10.10.2016, 21:05
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 8  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от in4core Посмотреть сообщение
Главная беда в том, что текст при изменении - меняет свой формат обратно, так как он подгруженный и формат у него вроде как изменить нельзя навсегда ( если не ошибаюсь)
Код AS3:
tf.defaultTextFormat = textFormat;
Должно решить проблему форматирования при изменении текста. Почему это вводит флешку в бесконечный цикл нужно решать отдельно. Сделай минимальный пример и убедись, что все ок, затем исключай потихоньку сложные вещи.

PS. Была бы память в организме, я бы точно вспомнил что не так в подгружаемых с помощью swf текстфилдах. Я точно помню, что то-то с ними не так было. Или было так, но был момент. У разрабов флекса тоже было обозначение проблемы.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 10.10.2016, 22:42
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 9  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

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

tf.defaultTextFormat = textFormat;
tf.setTextFormat(textFormat);
зависания нет, но текст вообще пропадает, а если убрать setTextFormat второй строкой, то бесконечный цикл. Видимо да - есть какой то нюанс. Но пока отказались вообще от этого, просто уменьишли поле и забили. Хотя на будущее интересно .
P.s - код привел полный, поэтому страннтсти в зависании цикла исключены, вроде бы.
__________________
Марк Tween

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

Регистрация: Nov 2010
Адрес: 48° 55'N 24° 42'E GMT +2:00
Сообщений: 399
Записей в блоге: 1
Возможно не самое изящное решение, но если подгруженный текстфилд вносит раздор в семью, то и незачем его усыновлять. Предлагаю использовать эти текстфилды в качестве шаблонов, по которым создаются собственные.

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

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

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


 


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


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