Actionscript 3 textField textWidth不正确ActionScript 3

Actionscript 3 textField textWidth不正确ActionScript 3,actionscript-3,Actionscript 3,我有一个使用postscript字体的动态文本字段(使用CS5中的经典字体引擎)。我在编写时创建了文本字段。当我试图使用textField.textWidth属性确定textField的实际宽度时,返回的宽度大错特错。例如,屏幕上显示的文本的宽度约为350像素。但是返回的宽度只有150像素。我尝试过切换字体,使用TextLineMetrix也没有用 知道我为什么不能得到准确的宽度吗 var str:String = "hello world"; mytf.autoSize = true; myt

我有一个使用postscript字体的动态文本字段(使用CS5中的经典字体引擎)。我在编写时创建了文本字段。当我试图使用textField.textWidth属性确定textField的实际宽度时,返回的宽度大错特错。例如,屏幕上显示的文本的宽度约为350像素。但是返回的宽度只有150像素。我尝试过切换字体,使用TextLineMetrix也没有用

知道我为什么不能得到准确的宽度吗

var str:String = "hello world";
mytf.autoSize = true;
mytf.text = str;
trace(mytf.textWidth )
trace (mytf._width)
62和63.8


怪异:S

确保设置文本字段的autoSize属性,这将导致flash将宽度识别为文本的宽度,而不是包含文本字段的宽度。试试这样的

myTextField.autoSize = TextFieldAutoSize.LEFT;
trace(myTextField.textWidth);

我发现getBounds给出了最接近的结果:

var bounds:Rectangle = textfield.getBounds(textfield.parent);

该.textWidth属性给了我最奇怪的结果(大部分是更大的),但这确实有效。不幸的是,这给了我与textField.textWidth相同的结果。如果您不能/想要使用自动调整大小,但需要具有特定格式的文本字段的精确设置,那么真的很烦人……也许您可以创建单独的函数,创建启用自动调整大小并在其中复制文本的临时文本字段,然后使用textWidth?大概是这样的: