我有一个文本字段,可以动态调整其宽度以适应屏幕。我希望文本被截断并附加'...',如果它不适合。但是,我如何知道文本值是否长于可用的文本字段宽度?
答案 0 :(得分:9)
嘿嘿简单: - )
while ( textfield.numLines > MAX )
textfield.text = textfield.text.slice(0, -4) + "...";
享受!
答案 1 :(得分:2)
yourTextField.textWidth
为您提供TextField文本的长度。
只需确保首先设置TextField的autosize属性,以真正获得文本的宽度而不是TextField的宽度。
答案 2 :(得分:2)
我需要这个完全相同的函数,我所做的是每当触发resize事件导致TextField
对象需要调整大小时我执行一个小循环,如下所示:
tfMessage.text = message;
if(tfMessage.width > maximumWidth)
{
tfMessage.appendText("...");
while(tfMessage.width > maximumWidth)
{
tfMessage.text = tfMessage.text.substr(0, -4) + "...";
}
}
确保TextField
对象的autoSize
属性设置为TextFieldAutoSize.LEFT
,以便在更新文本时自动调整对象的大小。您可以使用TextFieldAutoSize
枚举中的其他值,但LEFT
最适合我。用法示例:
tfMessage.autoSize = TextFieldAutoSize.LEFT;
看起来有点矫枉过正,但这是你最好,最干净的选择。此外,我使用它来精确调整数百个TextField
对象的大小,而不会在普通计算机上降低性能。给Flash一些信用哈哈,他们对AVM2的调整和优化做得很好。
无论如何,我希望这会有所帮助,对我来说非常适合。祝你的项目好运。
答案 3 :(得分:1)
可能唯一的方法是,如果textWidth长于宽度,要逐字逐句地循环文本,或者一次添加或删除一个字母,然后添加省略号并检查宽度,直到它接近填写整个文本字段。
答案 4 :(得分:1)
好吧,经过一些大脑支架后,我想到了如何将字符串留在textField中裁剪,只需在新MC中添加额外的“......”并将其可见性设置为false。当textField.textWidth> = textField.width时,它使“...”MC可见并将其定位在textField的末尾。这可以在textField的内部或外部。