2009-05-10

TextFieldのサイズにあわせて表示テキストを途中で区切る

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
テキストフィールド1行ではみ出した場合の末尾に「…」をつけたい場合の例として
http://level0.kayac.com/2008/05/textfield_sample.php
が参考になりまして、こちらを改良して
幅と高さのテキストフィールドを用意して、このテキストフィールドをはみだす場合は、末尾に「…」をつけてみました。

var sample_tf : TextField = new TextField();
sample_tf.width = 100;
sample_tf.autoSize = TextFieldAutoSize.LEFT;
sample_tf.selectable = false;
sample_tf.multiline = sample.wordWrap = true;
sample_tf.text = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわ";
var need_dot:Boolean = false;
var max_height = 30;
while ( sample_tf.height > max_height ) {
sample_tf.text = sample_tf.text.slice( 0, sample_tf.text.length -1 );
need_dot = true;
}
if (need_dot) {
sample_tf.text = sample_tf.text.slice( 0, sample_tf.text.length -1 ) + "…";
//削除した文字がたまたま半角文字だと「…」をつけると
//heightをオーバーする可能性があるので念のためもう一度チェックを入れる
if (sample_tf.height > max_height) {
sample_tf.text = sample_tf.text.slice( 0, sample_tf.text.length -2 ) + "…";
}
}

ブログパーツの帯のタイトル部分と吹き出しの部分でこれを利用しています。
コメントを投稿