はい。
アクセス解析を見ていると、この記事に引っかかってくる人がやたら多いので
前回の記事をわかりやすくしてみました。
(前回のやつわかりにくいよねー)
はい。
何をするかっていうと
プログラム内でたとえばスイッチを押したときとか、
何か条件が起きた時にオブジェクトを追加表示、削除を行いたいということです。
ということでおさらい。
重要なことは2つ
追加される側のBranchGroupでは
branchG0.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND);
branchG0.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE);
を行うこと。
追加する側では(削除したいならば)
branchG0.setCapability(BranchGroup.ALLOW_DETACH);
と記述します。
そして追加する際は追加するBranchGroupに対し
branch.addChild(branchG0);
とする。(追加できるのはBranchGroupのみだった気がします)
削除する際にはすでに追加したBranchGroup(グローバル化するなどしてとっておく)に対し
branchG0.detach();
とする。
とそんだけなんです。
ということで珍しくサンプルソース。
AddTest.java
このソースでは元のBranchGroupと、追加するBranchGroupを
branchとbranchArに保存しておき
Threadで適当に追加削除を繰り替えすプログラム。
チェックする点は元のBranchGroup作成時と
追加するBranchGroup作成時。
createSceneGraph()
getObject()
に注目である。