重要なお知らせ: このブログの更新は終了しました!詳しくはこちら "ブログ移転しました。" をご覧ください。

Papervision3D 2.0 マウスアクションをつける際のハンドカーソル


3D上のオブジェクトで
クリックしたときとか、
ロールオーバーしたときとか、にイベントをとる方法。

いつも拝見させていただいていて勉強させてもらってます
feb19.jp さんのblogで紹介があります。
・Papervision3D 2.0 GreatWhiteでマウスに反応するキューブを作る

[Viewport3D_instance].containerSprite.buttonMode = true;

で、マウスカーソルをボタンタイプにできるようになるらしく、
しかして、interactiveでない3Dオブジェクトにも適応されてしまうっていう問題があるよう。
すべてのオブジェクトでハンドカーソル表示になってしまうということ
なんとか回避できないかと….


追って事足りなくなりそうだけど、とりあえずシンプルな考えで回避成功。

feb19.jp blogさんのご紹介内容を基本としまして、以下のように。

PV3Dのイベントは、interactive = true にしたものしか
(とうぜん)発生しないので、
マウスオーバーのタイミングで buttonMode = true に、
マウスアウトのタイミングで buttonMode = false にすます。
ベウリーシンポーす。

import org.papervision3d.events.InteractiveScene3DEvent;

[Material_instance].interactive = true;

[Primitives_object].addEventListener(InteractiveScene3DEvent.OBJECT_OVER, function(e) {
[Viewport3D_instance].containerSprite.buttonMode = true;
})

[Primitives_object].addEventListener(InteractiveScene3DEvent.OBJECT_OUT, function(e) {
[Viewport3D_instance].containerSprite.buttonMode = false;
})

Viewport3Dのinteractive = true もお忘れなく。

PV3D 1.5とかの時は、Group.asをつかって.container で 3Dが描画されているDisplayObjectを直接触れたので
マウスEventとるのとか、Filterつけるのとか、PV3Dなんて意識せず楽勝につけれたんだけど
2.0では、containerにアクセスできないっぽい?!
すんげーコレしりたい

2 件のコメント

  1. DYO:

    すげーなやんでました。ありがとうございました。

  2. ekndesign:

    DYOさん
    こんにちは。
    おやくにたててうれしいです!

コメントをどうぞ