簡體   English   中英

在ActionScript和Flex中計算文本寬度

[英]Calculating Text Width In ActionScript And Flex

我正在嘗試根據它將包含的文本來計算WIDE如何制作我的按鈕,當我嘗試谷歌如何計算像某些文本的寬度一樣簡單的東西時,我只是試着去試圖通過明顯無意義的深奧反直覺伏都教。 那里的任何人都可以幫我簡化我如何編寫這樣的函數:

public function HowWideWouldThisTextBeIfItWereInThisButton(Text:String,Container:Button):int {
 ...
}

提前致謝。

只要您在UIComponent中,就可以使用measureText函數。

public function howWideWouldThisTextBeIfItWereInThisButton(text:String,container:Button):int {
   var lineMetrics:TextLineMetrics = container.measureText(text);
   return lineMetrics.width;      
}

話雖這么說,如果你沒有設置寬度,flex按鈕組件應自動調整大小到文本的寬度。 這樣,如果你需要文本寬度,你可以調用textWidth屬性。

這適用於任何格式,大小,字體類型。 不要忘記屬性“autoSize”和“wordWrap”!

var tf:TextField = new TextField();
addChild(tf);
tf.autoSize = TextFieldAutoSize.LEFT;
tf.wordWrap = false;
tf.text = "Whatever here";
tf.width = tf.textWidth + 4; // add 2 pixels-gutters left & right

你的按鈕需要“tf.width”寬...

以下是你在Spark中的表現:

我修改了 - 簡化 - 他的例子在這里:

var textMetrics:TextLineMetrics = label.measureText( label.text );  
var textWidth:int = textMetrics.width; 

這是一種有效的方式:

var tempText:Text = new Text();
tempText.regenerateStyleCache(false);
var textWidth:int = tempText.measureText(*yourstring*).width;

我認為textField.textWidth構造工作正常......直到你改變字體大小。 它似乎根據12px字體計算寬度。 因此,如果您有嵌入字體和全局樣式,您可以嘗試快速解決方案:

var realWidth = myLabel.textField.textWidth * (fontSize / 12);

我在長短串上試過這個,結果是正確的。

約書亞,清楚真的很有幫助。 你在說TextField,MX Label,Spark Label,RichText等嗎? 不同的文本組件使用不同的文本引擎,例如FTE和TLF,並且可能具有不同的解決方案。 我當然希望Adobe有一套很好的實用程序或示例代碼,可以在實際執行之前預測渲染到控件上的字體大小。 但是,好消息是,在某些情況下 - 比如,一個好的老式TextField,你可以很好地預測這一點。 您只需創建一個TextField,設置它的textFormat字段,自動大小方法和文本。 在將其添加到任何地方之前,您應該能夠獲得它的大小。 我不記得訂單是什么,但是,我記得你設置這些屬性的順序很重要。 如果你無法弄清楚如何做,我可以提供一個代碼示例。 現在,對於新的,“改進的”組件,如Spark標簽 - 如果我能找到一個該死的方式,我會被惹惱......花了好幾個小時就沒有辦法......或者是某個人知道一種方式:P。

繼續quoo的回答的評論 ,這里是用於相同目的的代碼,但只是使用TextLineMetrics抓取TextField的寬度:

    public function mtxtWidth(container:TextField):int {
       var lineMetrics:TextLineMetrics = container.getLineMetrics(0);
       return lineMetrics.width;      
    }

聽起來你可以使用textWidth

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM