[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:00154] Re: Nodeの削除について
木曾海老屋通販逸品カタログ ====================
『えっ!木のワインクーラー!おっ!うるし塗りのワイングラス??』
☆ 食を楽しくする器のお店です☆
ヒノキの箸 お椀 弁当箱 コーヒーカップ おひつ等逸品の数々!!
========== http://www.cnet-kiso.ne.jp/h/hajime/ippin.html
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Mitsuru Tsukiyamaさん : [Java3Djp:00150]
>ところで,引き続き質問になってしまうのですが,
>TransformGroupにAddしたNodeのRemoveを行いたいのです.
>removeChild(int index)を使用するしかないのでしょうか?
>この場合そのNodeのIndexを知る方法がわからないのですが,
>直接引数にNodeを指定できる or NodeのIndexの取得方法を
>がありましたら教えてください.
結論から言えば、removeChildしかありませんので ....
この場合には、以下のような感じでremoveするように簡単なメソッドを
Groupから継承するクラスなどで定義して利用してみてください。
public boolean remove(Node node) {
for (int n=0; n<numChildren(); n++) {
if (getChild(n) == node) {
removeChild(n);
return true;
}
}
return false;
}
Java3DはシーングラフAPIとしてはかなり貧弱なので、ユーザーが使いや
すくするには、このようにちょっとした工夫が必要です。
#Java3Dは仕様を決める時点から、おそらく配列ベースで実装することが
#開発者の頭にあって、それがそのままAPIにも反映された感じです。
#おせじにも洗練されたシーングラフAPIとは言えませんよね (^ ^;)
>またIndexを使うのならば,自分でIndexを指定して対応
>付けを行っておこうと思うのですが,
>複数の物体を一つのTransformGroupに複数付けて,それを
>removeChild(0) を繰り返すと全て削除できます.
>これはIndexが前に詰められているということなのでしょうか?
確認はしていないのですが、削除時のIndexに関しては"前に詰められる"
認識で良いと思います。
それとJava3Dオブジェクトに、今回のようなIndexなどの情報を付加したい
場合には、SceneGraphObject.setUserData()でデータオブジェクトを
設定してやるのが簡便だと思います。
以上簡単ですが、ご参考まで (^ ^)
----------------------------------------
Satoshi Konno
skonno@xxxxxxxxxx
http://www.cyber.koganei.tokyo.jp