« メモ | Home | うぇー »

Feb 162009

TextFieldAutoSize.RIGHTの憂鬱

もうこれ前々から良く分からないんだけど、改めて今日再チャレンジしたけどやっぱり分からない。
何がやりたいかっていうと
・右揃え(基点、行送り共に)
・改行アリ
・幅固定
をやりたいってこと。
幅固定をなしにして普通にやるとこんな感じ。

import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;

var txf:TextFormat = new TextFormat();
txf.align=flash.text.TextFormatAlign.RIGHT;

var tx:TextField = new TextField();
tx.defaultTextFormat = txf;
tx.border=true;
tx.autoSize =TextFieldAutoSize.RIGHT;
tx.x=200;
tx.text="これは どうしてああああああ \nこうなるの?";
addChild(tx);

mmts_mobile004.gif
この場合はtextFieldの端ではなく、内部のテキストの右端がx=200にフィットする。
TextField自体の右端にあわせる場合は一度defaultのwidth=100をリセットしてwidth=0とすれば可能。またautosize設定の前にx座標を指定する場合には、これも同じく一度width=0にしてやればよい。
こんな感じ

var tx:TextField = new TextField();
tx.defaultTextFormat = txf;
tx.border=true;
tx.x=200;
tx.width=0;
tx.autoSize =TextFieldAutoSize.RIGHT;
tx.text="これは どうしてああああああ \nこうなるの?";
mmts_mobile001.gif

で、wordWrapを入れた場合いきなりこんなことになる。

var tx:TextField = new TextField();
tx.defaultTextFormat = txf;
tx.border=true;
tx.wordWrap=true;
tx.autoSize =TextFieldAutoSize.RIGHT;
tx.x=200;
tx.text="これは どうしてああああああ \nこうなるの?";
mmts_mobile002.gif いきなり左基点である。(この場合のTextFieldの幅はdefaultの100)

ちなみにwordWrapをautoSizeの後に入れると、幅が0になる。
順番としては
wordWrap
autoSize
という感じなのだろうが、なんにしろ右基点じゃなくなる。

ちなみにwordWrapの後にautoSizeしてからwidthを指定するとこんな感じ

var tx:TextField = new TextField();
tx.defaultTextFormat = txf;
tx.border=true;
tx.wordWrap=true;
tx.autoSize =TextFieldAutoSize.RIGHT;
tx.x=200;
tx.width=150;
mmts_mobile003.gif

まぁ別に左基点で計算して配置すりゃいいんだけど、なんかイラっとするのはオレだけですか?
っつーかなんかすごい簡単なことを見落としていて出来てないだけだったら恥ずかしス。

Leave a comment

Search and Archives