天天看點

如何獲得放大後TextField的textWidth

  在一個外單項目中,有一需求是一小圖示要距離标題文字24像素,第一感覺當然是icon.x=txt.x+txt.textWidth+24 就可以解決了。但發現textWidth的長度小于文本實際顯示的長度,導緻icon的位置跟文字重疊了。一開始我以為是textWidth的問題,然後我打算使用getCharBoundaries()去獲得最後一個字元的位置,發現得到的值跟textWidth差不多。理論上這兩種方法都沒問題,但現在得到的值卻小了很多。百思不得其解,唯有上網搜尋下相關的問題,卻沒發現相關的解決辦法。陷入困境後,我打開素材fla檔案,研究那個标題textField的設定。在看字型大小設定的時候,發現才12px的字型大小顯示起來卻有30左右的px,這讓我發現動畫制作人員隻是通過縮放工具去改變顯示大小,而不是通過改變字型大小達到想要的效果。用一例子說明這種情況:

如何獲得放大後TextField的textWidth

從上到下分别是txt1,txt2,txt3;txt2是通過txt1放大後的效果。txt1,txt2的textWidth是相同的。txt3是手動控制字型大小調整出來的效果,它跟txt2的顯示是可以完全重疊的。是以,我的解決辦法是手動調整一個效果相似的textField,通過這個中間對象去間接獲得textField的文本寬度。更好的解決辦法是直接叫動畫更改為用字型大小去控制顯示而不是縮放,這樣省心省力。