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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.02.2012, 17:59
s3dworld вне форума Посмотреть профиль Отправить личное сообщение для s3dworld Найти все сообщения от s3dworld
  № 1  
Ответить с цитированием
s3dworld

Регистрация: Apr 2010
Сообщений: 170
По умолчанию Подгон размера в TextField

Всем доброго дня!

Есть текстовое поле. Можно ли как-то сделать, чтобы оно само подстраивало свои размеры (в основном ширину) под введённый ей текст? То есть текст ей вводится не в ручную, а присваивается в в свойстве text.

А то есть у меня текстовое поле используется в комбинации с CheckButton. И когда я нажимаю на текстовое поле, у меня срабатывает сама кнопка. Всё нормально, но только для коротких фраз получается что срабатыванием идёт даже если тыкнули не на тексте.

Старый 13.02.2012, 18:05
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 2  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Код AS3:
var tf:TextField = new TextField(); 
tf.autoSize = TextFieldAutoSize.LEFT;
__________________
http://www.chessmax.ru

Старый 13.02.2012, 18:13
s3dworld вне форума Посмотреть профиль Отправить личное сообщение для s3dworld Найти все сообщения от s3dworld
  № 3  
Ответить с цитированием
s3dworld

Регистрация: Apr 2010
Сообщений: 170
Inet_PC
Это не то. Это он выравнивает. Для клипа где этот текст лежит он всё равно мышкой тыкается там где текста нет.

Старый 13.02.2012, 18:21
mayakwd вне форума Посмотреть профиль Отправить личное сообщение для mayakwd Посетить домашнюю страницу mayakwd Найти все сообщения от mayakwd
  № 4  
Ответить с цитированием
mayakwd
 
Аватар для mayakwd

Регистрация: Jul 2008
Адрес: t:2, x: 0.76
Сообщений: 553
Отправить сообщение для mayakwd с помощью ICQ Отправить сообщение для mayakwd с помощью Skype™
Размер текстового поля можно задать вручную:

Код AS3:
textField.width = textField.textWidth + 4;
textField.height = textField.textHeight + 4;
__________________
Блог, Twitter
Брюзга.

Старый 13.02.2012, 18:36
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 5  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Ну так свойство autoSize как раз при каждом изменении text заодно и меняет ширину textField. А за выравнивание отвечает TextFormatAlign.*. По идеи должно работать, хотя... Неплохо бы кусочек кода. И что такое CheckButton? Ну или как mayakwd сказал сами задавайте нужный Вам размер.
__________________
http://www.chessmax.ru

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

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
Цитата:
Сообщение от s3dworld Посмотреть сообщение
Inet_PC
Это не то. Это он выравнивает. Для клипа где этот текст лежит он всё равно мышкой тыкается там где текста нет.
это как раз то

проверьте что multiline = false
__________________
low +

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

Регистрация: Apr 2010
Сообщений: 170
Да, видимо нужно больше информации. Я пишу GUI для игры. Вот дошло время до кнопки изменения состояния. В начале я написал класс CheckButton и всё было как надо. А левее от него был текст. Но начальник сказал чтобы при нажатие на текст CheckButton тоже срабатывал. Тогда я решил текст внести в сам класс CheckButton. Вот как у меня он выглядит:



Видите какой размер поля? А текст я вношу уже по ходу. Вот полный код класса (заодно покритикуете его):

Код AS3:
package d.game.gui
{
	import d.game.events.GUIEvent;
	import flash.events.MouseEvent;
	import flash.text.TextField;
 
	// Поведение кнопки выбора окна отладки
	public class GUICheckButtonText extends GUIEntity
	{
		private var isEnable:Boolean=false;					// Включена ли кнопка
		private var isDown:Boolean=false;					// Нажата ли кнопка
		private var isChecked:Boolean=true;					// Есть ли галочка
 
		public var textField:TextField=null;
 
		private var text:String=null;						// Текст
 
		// Конструктор
		public function GUICheckButtonText()
		{
			entityType=CHECK_BUTTON_TEXT;
			text="CheckButton";
 
			if(isChecked)
				gotoAndPlay("OnDisable_Checked");
			else
				gotoAndPlay("OnDisable_Unchecked");
 
			textField.text=text;
		}
 
		// Указать текст
		public function SetText(_text:String):void
		{	
			text=_text;
 
			if(isChecked)
				gotoAndPlay("OnDisable_Checked");
			else
				gotoAndPlay("OnDisable_Unchecked");
 
			textField.text=text;
		}
 
		// Включить ли галку
		public function SetChecked(_isChecked:Boolean):void
		{
			isChecked=_isChecked;
 
			if(isChecked)
				gotoAndPlay("OnDisable_Checked");
			else
				gotoAndPlay("OnDisable_Unchecked");
 
			textField.text=text;
		}
 
		// Есть ли галка
		public function GetChecked():Boolean
		{
			return isChecked;
		}
 
		// Включение кнопки
		public function Enable():Boolean
		{
			if(isEnable) return false;
 
			addEventListener(MouseEvent.MOUSE_OUT,OnMouseOut);
			addEventListener(MouseEvent.MOUSE_OVER,OnMouseOver);
			addEventListener(MouseEvent.MOUSE_DOWN,OnMouseDown);
			addEventListener(MouseEvent.MOUSE_UP,OnMouseUp);
 
			if(isChecked)
				gotoAndPlay("OnMouseOut_Checked");
			else
				gotoAndPlay("OnMouseOut_Unchecked");
 
			textField.text=text;
 
			isEnable=true;
 
			return true;
		}
 
		// Выключение кнопки
		public function Disable():Boolean
		{
			if(!isEnable) return false;
 
			isEnable=false;
 
			removeEventListener(MouseEvent.MOUSE_OUT,OnMouseOut);
			removeEventListener(MouseEvent.MOUSE_OVER,OnMouseOver);
			removeEventListener(MouseEvent.MOUSE_DOWN,OnMouseDown);
			removeEventListener(MouseEvent.MOUSE_UP,OnMouseUp);
 
			if(isChecked)
				gotoAndPlay("OnDisable_Checked");
			else
				gotoAndPlay("OnDisable_Unchecked");
 
			textField.text=text;
 
			return true;
		}
 
		// Увели мышку с кнопки
		private function OnMouseOut(_event:MouseEvent):void
		{
			isDown=false;
 
			if(isChecked)
				gotoAndPlay("OnMouseOut_Checked");
			else
				gotoAndPlay("OnMouseOut_Unchecked");
 
			textField.text=text;
		}
 
		// Навели мышку на кнопку
		private function OnMouseOver(_event:MouseEvent):void
		{
			isDown=false;
 
			if(isChecked)
				gotoAndPlay("OnMouseOver_Checked");
			else
				gotoAndPlay("OnMouseOver_Unchecked");
 
			textField.text=text;
		}
 
		// Нажали на кнопку
		private function OnMouseDown(_event:MouseEvent):void
		{
			isDown=true;
 
			if(isChecked)
				gotoAndPlay("OnMouseDown_Checked");
			else
				gotoAndPlay("OnMouseDown_Unchecked");
 
			textField.text=text;
		}
 
		// Отжали кнопку
		private function OnMouseUp(_event:MouseEvent):void
		{
			isChecked=!isChecked;
 
			if(isChecked)
				gotoAndPlay("OnMouseOver_Checked");
			else
				gotoAndPlay("OnMouseOver_Unchecked");
 
			textField.text=text;
 
			if(isDown)
			{
				isDown=false;
				dispatchEvent(new GUIEvent(GUIEvent.CHECK_BUTTON_CHANGE,this));
			}
		}
	}
 
}
В самой же уже игре должно будет выглядеть примерно так:



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

Как исправить?

Добавлено через 38 минут
Решил проблему двумя строчками:

Код AS3:
textField.text=text;
textField.width=textField.textWidth+5;

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

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

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


 


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


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