Flash:表示するテキストが折り返されるかの判断
2009.02.05
XMLなどから読み込んだテキストデータを、ダイナミックテキストに表示させるときのお話です。

テキストフィールドの横幅が決まっていて、かつどのくらいのテキストが入ってくるかわからない場合、テキストが折り返されるか(改行されるか)の判断が必要なときがあります。
たとえば、テキスト終わりの真下にボタンを置きたいときなど。一行のときと二行のときとで、ボタンの位置を変える必要がありますよね。
(注)とくに文字数が必要でなければ" target="_self">こちらが簡単です! (09/09/11)

テキストの文字数を数えることもできますが、.lengthではバイト数を取得できないため、折り返し位置の判断には向きません。(全角なら5文字しか入らない幅でも、半角なら10文字入ります)

そこで、バイト数を判断するスクリプトを探しました。

http://oshiete1.goo.ne.jp/qa3351087.html

こちらの回答を参考にさせていただいています。


// 折り返しの判断
function strReturn(S) {
// バイト数を表す変数 N の初期化
N = 0;
for (i=0; i<S.length; i++) {
if (S.charCodeAt(i)<=255) {
N += 1;
} else {
N += 2;
}
}

// ここに処理を入れる

}

textData = "表示させたいテキスト";

// 実行
strReturn(textData);

こんな感じです。

変数Nは文字のバイト数となります。
テキストを1文字ずつ調べていき、その文字コードが255以下(半角文字)なら1を、それ以外(全角文字)なら2を足していきます。

なのでfor文が終わった時点でのNの値が、そのテキストの合計バイト数になります。

あとはfor文の後に、変数Nを使ったスクリプトを書くだけですね。
一行に半角10文字まで入るテキストフィールドの場合、

L = Math.ceil(N / 10); // 行数を計算

こんな一行を入れます。
これで行数を取得することができました。(変数L)



月別アーカイブ