モーションタイポ再び (3)
2008/02/19 23:25 - AS3.0
以前作ったモーションタイポクラスでは、静止時における各文字のX座標は以下のように取得していました。
- 表示する文字列を1文字ずつ分離
- 変数 w を生成、0 で初期化
- 1文字ずつテキストフィールド TF を生成
- TF.x = w
- TF.text = カレント文字
- w += TF.textWidth
i ~ iii の過程を文字列を構成する文字がすべて終わるまでループします。
文字列が1行の場合はこれでもいいんですが、複数行になった場合、ちょっと面倒です。
対象文字列を "\n" ごとにバラして配列にし、上記のループを入れ子にする形でループをもうひとつ作らなければならない。二重ループにする必要があるわけですね。
まぁ二重ループでもいいんですが、もしできるならもうちょっと楽したいなあ、と思うのは怠け者の
それに簡単になるならコードの見易さも高まろうというもの。
そんなわけで LiveDocs の flash.text.TextField を探してみました。
あ、なんか使えそうなメソッド発見!
getCharBoundaries( charIndex:int ):Rectangle
これがそんなメソッドなのかは LiveDocs を参照していただくとして、LiveDocs のサンプルを参考に挙動サンプルを作ってみました。それが下のサンプルです。
青い枠がテキストフィールドの border、赤い枠が getCharBoundaries で取得した各文字ごとの rectangle の外縁を可視化したものです。
お、なんかイイ感じじゃあないですか。
複数行に簡単に対応できたうえに、さんざん頭を悩ませてきた文字列の alignment 問題もあっさり解決しちゃいそうな予感。
続く。
シリーズ
- モーションタイポ再び (9)
- モーションタイポ再び (8)
- モーションタイポ再び (7)
- モーションタイポ再び (6)
- モーションタイポ再び (5)
- モーションタイポ再び (4)
- モーションタイポ再び (2)
- モーションタイポ再び (1)