我已經創建了一個動態文本字段,並將autoSize設置爲true,因此它可以根據需要增長。然後我想使用_height值來設置容器圖形(氣泡)。在Actionscript 2中,爲什麼TextField _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);
然後我嘗試向容器的高度設置爲文本字段+ 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。
關於這裏發生了什麼的任何想法?
感謝您的洞察力。它是Actionsript 2。 – mrdrbob 2011-05-09 15:06:08