我有一个文本字段,可以动态调整其宽度以适应屏幕。如果不合适,我希望将文本截断并附加“...”。但是我怎么知道文本值是否比可用的文本字段宽度长?
5 回答
嘿,简单点怎么样 :-)
while ( textfield.numLines > MAX )
textfield.text = textfield.text.slice(0, -4) + "...";
享受!
我需要这个完全相同的功能,我所做的是每当触发调整大小事件导致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 调整和优化方面做得很好。
无论如何,我希望这会有所帮助,非常适合我。祝你的项目好运。
yourTextField.textWidth
为您提供 TextField 文本的长度。只需确保首先设置 TextField 的 autosize 属性,以真正获取文本的宽度,而不是 TextField 的宽度。
好的,经过一番绞尽脑汁,我想如何让字符串在 textField 中裁剪,然后在新的 MC 中简单地添加一个额外的“...”并将其可见性设置为 false。当 textField.textWidth >= textField.width 时,它使“...” MC 可见并将其定位在 textField 的末尾。这可能在文本字段的内部或外部。
可能唯一的方法是如果 textWidth 比宽度长,则逐个字母地循环遍历文本,一次添加或删除一个字母,然后添加省略号并检查宽度,直到它接近填充整个文本域。