![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2010
Сообщений: 170
|
Всем доброго дня!
Есть текстовое поле. Можно ли как-то сделать, чтобы оно само подстраивало свои размеры (в основном ширину) под введённый ей текст? То есть текст ей вводится не в ручную, а присваивается в в свойстве text. А то есть у меня текстовое поле используется в комбинации с CheckButton. И когда я нажимаю на текстовое поле, у меня срабатывает сама кнопка. Всё нормально, но только для коротких фраз получается что срабатыванием идёт даже если тыкнули не на тексте. |
|
|||||
|
__________________
http://www.chessmax.ru |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 170
|
Inet_PC
Это не то. Это он выравнивает. Для клипа где этот текст лежит он всё равно мышкой тыкается там где текста нет. |
|
|||||
|
Ну так свойство autoSize как раз при каждом изменении text заодно и меняет ширину textField. А за выравнивание отвечает TextFormatAlign.*. По идеи должно работать, хотя... Неплохо бы кусочек кода. И что такое CheckButton? Ну или как mayakwd сказал сами задавайте нужный Вам размер.
__________________
http://www.chessmax.ru |
|
|||||
|
Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
|
Цитата:
проверьте что multiline = false
__________________
low + |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 170
|
Да, видимо нужно больше информации. Я пишу GUI для игры. Вот дошло время до кнопки изменения состояния. В начале я написал класс CheckButton и всё было как надо. А левее от него был текст. Но начальник сказал чтобы при нажатие на текст CheckButton тоже срабатывал. Тогда я решил текст внести в сам класс CheckButton. Вот как у меня он выглядит:
![]() Видите какой размер поля? А текст я вношу уже по ходу. Вот полный код класса (заодно покритикуете его): 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 минут Решил проблему двумя строчками: |
![]() |
![]() |
Часовой пояс GMT +4, время: 05:49. |
|
|
« Предыдущая тема | Следующая тема » |
|
|