Вы можете создать свой собственный пользовательский класс TextField
, а затем переопределить свойство text
, чтобы при назначении значения можно было объединить некоторые дополнительные функции.Тогда в вашем CustomButton
классе ваше свойство label может быть экземпляром этого пользовательского TextField
класса.Я сделал следующий пример, чтобы продемонстрировать это:
Main.as {класс документа):
package
{
import com.flashdevelopprojects.display.CustomButton;
import flash.display.Sprite;
import flash.events.Event;
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}// end function
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
var customButton:CustomButton = new CustomButton();
customButton.label.text = "supercalifragilisticexpialidocious";
trace(customButton.label.text); // supercalif...
}// end function
}// end class
}// end package
CustomButton.as:
package com.flashdevelopprojects.display
{
import com.flashdevelopprojects.text.CustomTextField;
import flash.display.Sprite;
public class CustomButton extends Sprite
{
public var label:CustomTextField;
public function CustomButton()
{
init();
}// end function
private function init():void
{
label = new CustomTextField();
}// end function
}// end class
}// end package
CustomTextField.as:
package com.flashdevelopprojects.text
{
import flash.text.TextField;
public class CustomTextField extends TextField
{
override public function get text():String { return super.text }
override public function set text(text:String):void { super.text = truncate(text) }
private function truncate(text:String):String
{
return (text.length > 10) ? text.substring(0, 10) + "..." : text;
}// end function
}// end class
}// end class
В этом примере при назначении строкового значения свойству label
объекта text
вызывается закрытый метод truncate()
, который анализирует это строковое значение.Если длина строкового значения больше 10, то возвращается строка исходного строкового значения, которая усекается.Затем усеченная строка присваивается свойству super.text
.
Теперь, когда вы отслеживаете свойство label
объекта *1022*, вы получаете усеченную строку, а не исходную строку.