AS3文本字段,截断

时间:2012-04-17 15:03:00

标签: actionscript-3

我有一个文本字段,可以动态调整其宽度以适应屏幕。我希望文本被截断并附加'...',如果它不适合。但是,我如何知道文本值是否长于可用的文本字段宽度?

5 个答案:

答案 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的内部或外部。