TextField: Замен. последние видимые символы точками, если текст слишком длинный
Здравстуйте. Подскажите пожалуйста эффективный алгоритм преобразования строки текста так, чтобы если она полностью не помещаеться в однострочное текстовое поле, то ее последние видимые в поле символы заменялись точками, причем желательно чтобы результат не зависел ни от шрифта ни от размера строки. Мне пока пришла на ум такая реализация:
Код AS3:
public function zipText(tf:TextField, text:String):String {
var i:int = 0;
tf.text = text;
var str:String = tf.text;
while(tf.textWidth > tf.width - 2){
str = str.substr(0, str.length - 1);
tf.text = str+"...";
i++;
}
return tf.text;
}
Но она ужасно неэффективна на мой взгляд, усовершенствать пока не смог, поэтому обращаюсь к вам.
|