ドット・タイポ (2)
2008/07/17 20:54 - AS3.0
まずは単純に、ステージをクリックすると文字が入れ替わる、ただそれだけのサンプルを組んでみました。
1バイト文字。
a ~ j までの10文字を循環。
2バイト文字。
あ~こ、までの10文字を循環。
- ソース(ZIP 11.6KB)
上記ソースを解凍して中を見ていただければ分かると思いますが、これはドキュメントクラス Main.as と文字座標取得保持クラス DotPosDataPool.as のふたつから成り立っています。
今回の作品「ドット・タイポ」の核心部分、TextField を BitmapData に draw し、それを getPixel して文字部分の座標を取得するプロセスは、DotPosDataPool.as というクラスとして独立させました。 インスタンスを生成しないスタティックなクラスです。
このクラスに文字列を投げると、その文字列を1文字ずつ分解し、文字の回数だけ BitmapData draw & getPixel で1文字分のドット座標を計算・パッケージ化し、プールするようコーディングしました。
文字ごとに幅が変わるのは面倒なので TextFormat.font を、1バイト文字のサンプルでは _typewriterに、2バイト文字のサンプルでは _等幅にしてあります。
1文字分のドット座標値は二次元 Array で保持されます。 そのArray の各要素にはブール値が格納されています。 true は文字を構成するドットを置く、false はドットを置かない、ということを意味します。
で、文字列全体のデータはその二次元 Array をさらに Array に格納しています。つまり三次元 Array になっているわけですね。 実に頭悪いコーディングですが、このへんのチューンナップはまさに今後のテーマのひとつになるので、今はこの状態で。
そしてプールしたドット座標値ですが、外部から要求があると正順または逆順で、一文字分ずつ返すようになっています。
ドキュメントクラスは、ドットとなる表示オブジェクトの生成とタイリング配置、そして DotPosDataPool から返ってきたドット座標値に応じてドットの visible を切り替える処理をおこなっています。
ステージをクリックすると、文字のドット座標値が1文字ずつ DotPosDataPool から発行されます。 その、ドット座標値が格納された二次元 Array の要素をそのままドットの visible に割り当てることで、ドット文字の表示が切り替わる仕組みです