« Flash CS3 関連のドキュメント | メイン | Apolloポケットガイド邦訳 »

DisplayObject3DにMouseEventがよくわからん

del.icio.us it!   hatena bookmark

よくわかりません ><

cube = rootNode.addChild(new Cube());
cube.container.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);

これしても実行時にエラーがでる

cube.container を trace しても null がはいっている。

サンプルとか見てると MovieAssetMaterial で material つくってやると container に addEventListener できるっぽいんだけど、Flash9α使ってないしなー。

ほかの material もやってみたけど、どーもうまくいきません。。。。

たちけて........


追記
kozyさんのコメントで解決しました。
http://un-q.net/2007/04/displayobject3dmouseevent.html#comment-1873

Scene3D ではなく MovieScene3D を使うと 直下の DisplayObject3D.container でイベントを取れるようです。
でも、DisplayObject3Dに addChild した DisplayObject3D のイベントはどうやって取ればいいのだろうか???



トラックバック

このエントリーのトラックバックURL:
http://un-q.net/mt-tb.cgi/135

コメント (2)

kozy:

はじめまして。ここのブログをかなり参考にさせてもらっております。
「DisplayObject3DにMouseEvent」、私もかなりハマってましたがこの書き込みから解決できましたので、ご参考になればと。

解決策ですが、Scene3DではなくMovieScene3Dを使用すればイベントが設定できました。
DisplayObject3D.containerプロパティはMovieScene3DにaddChildする時にSpriteが(newされて)セットされています。ということでSpriteで定義されているイベントをDisplayObject3Dでそのままハンドリングできるってことらしいですね。
でもこの仕様だとsceneの直接の子要素単位でしかイベントは捕まえられないってことなんですかね。。。

以上、長文で失礼しました。それでは。

>kozy
ありがとーございまーす!
出来ました!

MovieScene3Dは一度試していたのですが、いつも
rootNode = scene.addChild(new DisplayObject3D("rootNode"));
として rootNode にオブジェクト追加していたので、うまくいかなかったようです。
scene に addChild したらうまくいきました 。

>でもこの仕様だとsceneの直接の子要素単位でしかイベントは捕まえられないってことなんですかね。。。

これ困りますねー。
どうすればいいんだろうなー。

コメントを投稿

crossreview