マルチタッチってこうですか!? わかりません><
2009/11/24 21:00 - AS3.0
Flash CS5 はマルチタッチ対応だとか。
で、既にそのあたりの情報がここいらへんとかで流れていたりもするわけです。
ところで Multitouch.inputMode に何らかの値を設定して、マルチタッチを実行できるようにしたとして、各タッチポイントの座標取得って、どうなってるんですかねー。
わたくし不勉強なので存じ上げませんが、一つずつタッチポイントの座標を取得できるという設定で、来るべき未来に備えて、超粗雑な妄想マルチタッチプログラムを組んでみました。
ベースになるのは、いつぞや作った「Wonderwall のパチモン」。
これはマウス位置に応じて、ステージ上の各頂点が動くというのが骨格ですが、ENTER_FRAME のタイミング(update メソッド)でマウスの座標を取得し、それに基づいて各頂点座標を計算しています。 マウスは一つだけなので、当然 update メソッドでおこなわれる計算は1回です。
これを改造し、update メソッド時に、単純に、タッチポイントの数だけ複数回計算するようにしてみました。
話を単純化するために、常に3本指でマルチタッチをしているという設定にします。つまり1回の update で3回の座標計算をおこなうわけですね。
具体的な流れは以下のようになります。
Controller 内で3つの Point インスタンスを生成します。一つはマウスカーソル位置の座標、二つは Timer と Tweener を使って逐次勝手に動く Vertex2D インスタンスの座標を保持させます。 Timer と Tweener の連携で勝手に動く=ユーザが任意に動かしている、に見做してください。
Controller はそれら3つの Point インスタンス を Vector に格納し、ENTER_FRAME のタイミングで Model に渡します。
Model は update メソッドで、受け取った Vector から順次 Point インスタンスを取り出し、頂点座標の計算をおこなう、という風になっています。
今、ググってみたらば、FlashCS5 MultiTouch情報 というエントリー(いつもお世話になってる、ご存じ_level0.KAYAC 様のエントリー)に行き当たりましたが、こちらを拝見するに、複数あるタッチポイントは Point インスタンスとして Dictionary に格納されるという形になるんですかねー。