[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:01985] PickObject クラスに代わる PickCanvas クラスについて
■■■■■■ 喜びの声が続々!あなたの愛車をパワーアップ!■■■■■■■
ヒ┃ ッ┃ ト┃ 商┃ 品┃ エ┃ コ┃ マ┃ ッ┃ ハ┃
━┛ ━┛ ━┛ ━┛ ━┛ ━┛ ━┛ ━┛ ━┛ ━┛
★加速性アップ!★燃費向上!★排気ガス削減 『コムウエル』
■■■■■■ http://www.rakuten.co.jp/comwell/447837/448576/ ■■■■■
------------------------------------------------------------------------
こんにちは。お久しぶりです。
えんどうさんのサンプルプログラム
(http://www.javaopen.org/j3dbook/text/program6.html)の;
項目「イベントリスナーを使う方法」に掲載してある
PickSelectionFeedback.javaの53行目〜に以下のような
構文があります。
---------------------------------
private Node pickNode(int mx, int my) {
PickObject pickObject = new PickObject(canvas, scene);
SceneGraphPath sgPath = pickObject.pickClosest(mx, my,
PickObject.USE_GEOMETRY);
if (sgPath == null) return null;
Node node = pickObject.pickNode(sgPath, PickObject.PRIMITIVE, 1);
return node;
}
---------------------------------
ここで、com.sun.j3d.utils.behaviors.picking.PickObject
クラスは、現在のバージョン(1.2.1)では推奨されてない
ので、それに代わるクラスとしてPickCanvasを推奨すると
APIリファレンスに書いてあったので、それを使って以下の
ように書き換えてみました。
------------------------------
private Node pickNode(int mx, int my) {
PickCanvas pickCanvas = new PickCanvas(canvas, scene);
SceneGraphPath sgPath =
pickCanvas.pickClosest().getSceneGraphPath();
if (sgPath == null) return null;
Node node = pickCanvas.pickAny().getObject();
return node;
}
----------------------------------
ここで上の構文と比較してみると、
・pickClosestメソッドの引数が、無しのものしかありません。
・pickNodeメソッドがありません。
とりあえず、これで実行すると、コンパイルは通りますが、
マウスでピックした時に、SceneGraphPathを取得する部分で
実行時エラーが発生します。
pickCanvasクラスを使って、えんどうさんのサンプルプログラム
と同様の事がしたいのですが、どうすれば良いでしょうか?
ご教示下さい。
(参照:エラーメッセージ)
Exception occurred during event dispatching:
java.lang.NullPointerException
at PickSelectionFeedback.pickNode(PickSelectionFeedback.java:47)
at PickSelectionFeedback.access$0(PickSelectionFeedback.java:12)
at PickSelectionFeedback$1.mouseClicked(PickSelectionFeedback.java:26)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:210)
at java.awt.Component.processMouseEvent(Component.java:3718)
at java.awt.Component.processEvent(Component.java:3544)
at java.awt.Component.dispatchEventImpl(Component.java:2593)
at java.awt.Component.dispatchEvent(Component.java:2497)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:339)
at
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.ja
va:131)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java
:98)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:85)
------------------------------------------------------------------------
『被験者求む! 報奨金100万円。』
http://www.infoseek.co.jp/Special?pg=es_if.html&svx=971122