在一个外单项目中,有一需求是一小图标要距离标题文字24像素,第一感觉当然是icon.x=txt.x+txt.textWidth+24 就可以解决了。但发现textWidth的长度小于文本实际显示的长度,导致icon的位置跟文字重叠了。一开始我以为是textWidth的问题,然后我打算使用getCharBoundaries()去获得最后一个字符的位置,发现得到的值跟textWidth差不多。理论上这两种方法都没问题,但现在得到的值却小了很多。百思不得其解,唯有上网搜索下相关的问题,却没发现相关的解决办法。陷入困境后,我打开素材fla文件,研究那个标题textField的设置。在看字体大小设置的时候,发现才12px的字体大小显示起来却有30左右的px,这让我发现动画制作人员只是通过缩放工具去改变显示大小,而不是通过改变字体大小达到想要的效果。用一例子说明这种情况:

 

 

从上到下分别是txt1,txt2,txt3;txt2是通过txt1放大后的效果。txt1,txt2的textWidth是相同的。txt3是手动控制字体大小调整出来的效果,它跟txt2的显示是可以完全重叠的。所以,我的解决办法是手动调整一个效果相似的textField,通过这个中间对象去间接获得textField的文本宽度。更好的解决办法是直接叫动画更改为用字体大小去控制显示而不是缩放,这样省心省力。