September 6, 2010
Papervision3Dでのマウスイベントの付け方まとめ
FlashPlayer10が出てしばらく経ちますが、FP10実装でGOが出た案件はまだまだ少ない。
というわけで、まだまだPapervision3Dをバリバリ使ってます!今更ながら、3D空間上のオブジェクトにマウスイベントの付け方をまとめてみました。
以下3つの方法があります。
1. Plane などのプリミティブに InteractiveScene3DEventクラス を利用してマウスイベントを設定する方法
Papervision3Dでマウスイベントを設定する(1) - wonderfl build flash online
2. MovieMaterial のテクスチャに利用する Sprite などに MouseEventクラス を利用してマウスイベントを設定する方法
Papervision3Dでマウスイベントを設定する(2) - wonderfl build flash online
3. プリミティブ の ViewportLayer に MouseEventクラス を利用してマウスイベントを設定する方法
Papervision3Dでマウスイベントを設定する(3) - wonderfl build flash online
と、3つ挙げたものの、「どの方法がいいんじゃい!」と。。。
以下は個人的なやり方ですが、メモがてら書いておきます。
まずPV3Dの利用スタイルですが、PV3Dを使う時はデフォルトのソート(Zソート)を使わずにインデックスソートを利用する事が格段に多いです。
理由は、Zソート時に起きるオブジェクト同士が重なった時のオブジェクト欠けが気に入らないから。
その流れから最近はViewportLayerを使った「3. プリミティブ の ViewportLayer に MouseEventクラス を利用してマウスイベントを設定する方法」を採用する事が多いです。
「3. プリミティブ の ViewportLayer に MouseEventクラス を利用してマウスイベントを設定する方法」を利用するのにはちょっとした利点があります。
1、2の方法を採用する場合、Viewport3DのbuttonModeプロパティをオンマウス、マウスアウト時に切り替える処理を入れたり、制作していく中でマウスイベントの伝播がおかしくなったりすることがありました。
ところが、3の方法を採用する事によって、PV3D独特のイベントハンドリングに頭を悩ませる事無く、従来通りのイベントハンドリングを行う事が可能になります。
それにPV3DのオブジェクトにアルファやブラーなどのフィルターもViewportLayerに直接適用できるので便利です!
という理由から僕は「3. プリミティブ の ViewportLayer に MouseEventクラス を利用してマウスイベントを設定する方法」をオススメします。
コードなどは上記サンプルのwonderflの方にありますので、参考にしてみてください。
「マウスイベントの付け方は他にもあるぜぃ!」って場合はフォーク、コメント欄などで教えていただけるとうれしいです