ダイナミック テキスト フィールドを作成し、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);
次に、コンテナの高さをテキストフィールドの高さ + 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
と再計算するようなものなので、2回目は正しいです。
アクセス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によってコンパイルされています。
ここで何が起こっているかについてのアイデアはありますか?