2012-02-02 31 views
1

我有如下算法:現在如何查找文本字段中剩餘的空間?

if(textfield has no space left/full of characters till width) 
     do something 
    else 
     keep adding characters 

,問題是我不想要的文本字段侷限於字符的X數千萬,但人物的實際寬度。

任何線索?

+0

你是什麼意思的「空間」,你想添加字符,直到達到特定的寬度? – Kodiak 2012-02-02 17:01:55

+0

space =究竟是什麼?開導我們 – 2012-02-02 17:15:37

+1

我認爲他意味着角色的寬度 - 他們在屏幕上佔用多少空間。 – 2012-02-02 17:45:40

回答

4

對於TextField的每次更改,請使用TextField類的getLineMetrics(lineIndex:int)方法(reference)檢查文本的實際像素寬度。如果實際的文本寬度大於允許的寬度,則從末尾移除字符,直到它再次變得足夠窄。

+0

如果您使用的是flash.text.engine,那麼如果從getLineMetrics返回的度量標準未被證明是準確的,則還可以依賴TextLine.getAtomBounds。祝你好運。 – 2012-02-02 22:22:34

+0

我回來了,我有來自外星世界的消息。 getLineMetrics不能證明準確。 – 2012-02-04 05:18:47

+0

你可以試試'TextField'的'textWidth'屬性,儘管我懷疑它只是一個方便的屬性,返回與'yourTextField.getLineMetrics(0).width'相同的值。 – 2012-02-04 12:01:22

0

你的意思是你想檢查字符數不包括任何空格?在這種情況下,這應該是你的答案..

var whitespace:RegExp = /(\t|\n|\s{2,})/g; 
var trimmedValue:String = txtFieldValue.replace(whitespace, ""); 

if(trimmedValue < maxCharacterCount) { 
    do something 
} else { 
    keep adding chars 
} 
0

你需要的是一個具有maxChars屬性的輸入文本字段。設置maxChars爲12,並且您可以輸入字符,直到達到限制。

+0

他特別聲明他不想限制字符,但寬度。他正在尋找角色指標來計算何時在視覺上填充文本字段。 – 2012-02-02 22:20:18