AS3.0 への移植 "INVISIBLE"(2)
2007/07/09 21:22 - tweener
前回は一つの文字列についての集合離散のテストサンプルを作りました。
今回は複数の文字列を対象とした集合離散のテストをおこないます。
その第2回でも書きましたが、「Tweener で MotionTypography」シリーズでは、以下の複数のクラスを組み合わせることでモーションタイポを実現しました。
- Main.as
メインクラス - TypoLetter.as
文字を定義するクラス - StringSplitter.as
文字を配置するクラス - MotionEngine.as
動作を定義するクラス - StateDefine.as
動作開始前状態を定義するクラス
"INVISIBLE" のAS3.0 への移植にも、これらのクラス群を流用します。
そしてこれらのクラスのうち、前回の単文字列の集合離散において改変を施したのは MotionEngine.as 一つだけです
Main.as はドキュメントクラスであり、書き換えられることが前提なのでカウントしません。
また "INVISIBLE" においては StateDefine.as が不要になります。
そして、今回テストする複数文字列の集合離散では MotionEngine.as は前回改変したものをそのまま使うため、Main.as の書き換えだけで事が足ります。
まさに使い回し天国。クラス万歳!
まぁ実際には、離散時の状態にブラーを付加しているので、実際には MotionEngine.as にも修正を加えてありますが、原理的には変える必要がないわけです。
で、以下がサンプルです。
- poly.zip ( 11.8 KB )
しかし Tweener ってのはホントすごいね。
AS2.0 のときはあんだけ苦労した "INVISIBLE" がこんなに簡単に実装できるなんて。しかもブラーまで付けられる。実にステキだ。
ま、それはともかく。
このサンプルはどういう仕組みになっているかというと、前回、単文字列でおこなった文字オブジェクト生成の過程を、今回は文字列の数だけ繰り返し、その文字オブジェクト群は、文字列ごとに配列に格納します。
例えば、集合離散対象の文字列が "abc" , "def" , "ghi" の三つだとすると、以下のような配列が作られます。
array[0] = [ 文字a , 文字b , 文字c ] array[1] = [ 文字d , 文字e , 文字f ] array[2] = [ 文字g , 文字h , 文字i ]
そして、領域がクリックされる度に、上記配列を循環するよう UintCycle クラスオブジェクトを使って制御します。
なお、ここで使っている UintCycle クラスは、上記リンク先のエントリーで解説している UintCycle に多少変更を加えています。
カレントになった配列の文字オブジェクトは集合、それ以外は離散するようにします。
このサンプルのミソはといえば changeLetterDepth でしょうか。
集合対象の文字列の各文字オブジェクトの childIndex を1文字ずつ順次最上位に変更することで、当該文字列が画面の最前面になるようにしています。