0

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

4

5 回答 5

9

嘿,简单点怎么样 :-)

while ( textfield.numLines > MAX ) 
    textfield.text = textfield.text.slice(0, -4) + "...";

享受!

于 2013-02-27T00:16:19.610 回答
2

我需要这个完全相同的功能,我所做的是每当触发调整大小事件导致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 调整和优化方面做得很好。

无论如何,我希望这会有所帮助,非常适合我。祝你的项目好运。

于 2012-04-17T17:53:45.407 回答
2

yourTextField.textWidth为您提供 TextField 文本的长度。只需确保首先设置 TextField 的 autosize 属性,以真正获取文本的宽度,而不是 TextField 的宽度。

于 2012-04-17T15:18:18.830 回答
1

好的,经过一番绞尽脑汁,我想如何让字符串在 textField 中裁剪,然后在新的 MC 中简单地添加一个额外的“...”并将其可见性设置为 false。当 textField.textWidth >= textField.width 时,它使“...” MC 可见并将其定位在 textField 的末尾。这可能在文本字段的内部或外部。

于 2012-04-17T16:39:02.597 回答
1

可能唯一的方法是如果 textWidth 比宽度长,则逐个字母地循环遍历文本,一次添加或删除一个字母,然后添加省略号并检查宽度,直到它接近填充整个文本域。

于 2012-04-17T15:21:53.477 回答