我创建了一个动态文本字段,并将 autoSize 设置为 true,因此它可以根据需要增长。然后我想使用 _height 值来调整容器图形(语音气泡)的大小。
这是(简化的)代码:
var format:TextFormat = new TextFormat("Arial", 14);
format.color = 0x000000;
format.letterSpacing = -0.2;
var txt:TextField = _root.createTextField("dialog_txt", 150, 10, 10, 150, 0);
txt.multiline = true;
txt.wordWrap = true;
txt.autoSize = 'left';
txt.embedFonts = true;
txt.selectable = false;
txt.text = value;
txt.setTextFormat(format);
然后我尝试将容器的高度设置为 textfield + 5 的高度,但结果太短了。
container._height = txt._height + 5;
我发现通过trace(txt._height)
之前添加,即使跟踪值太小,值也会正确。即使只是将 txt._height 分配给临时变量 ( var junk=txt._height;
) 也可以解决问题。用几个跟踪函数替换它:
trace(txt._height); //Note: No code between these two calls
trace(txt._height);
返回19.6
后紧跟35.2
. 好像读取txt._height
会导致它重新计算,所以第二次是正确的。
我还尝试了该textHeight
属性,该属性似乎在_height
被访问后也会重新计算。这个序列,例如:
trace(txt.textHeight); // Returns 15
trace(txt.textHeight); // Returns 15
trace(txt._height); // Returns 19.6
trace(txt.textHeight); // Returns 31
trace(txt._height); // Returns 35.2
这是在 AS 2 中,由MTASC编译。
关于这里发生了什么的任何想法?