我正在尝试将一个行为放入BranchGroup但是当我运行该程序时,它会返回给我这个错误:
“线程中的异常”Thread-1“javax.media.j3d.RestrictedAccessException:Group:只能添加一个BranchGroup节点”
我不得不说我把那些setCapabilities:
ramaVisible = new BranchGroup();
ramaVisible.setCapability(BranchGroup.ALLOW_DETACH);
ramaVisible.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE);
ramaVisible.setCapability(BranchGroup.ALLOW_CHILDREN_READ);
ramaVisible.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND);
ramaVisible.setCapability(BranchGroup.ALLOW_BOUNDS_READ);
ramaVisible.setCapability(BranchGroup.ALLOW_BOUNDS_WRITE);
这就是我将行为放入BranchGroup
的方法 Colisiones behaviourColision = new Colisiones(this.ramaVisible,this,this.juego);
behaviourColision.setSchedulingBounds(new BoundingSphere());
this.ramaVisible.addChild(behaviourColision);
我正在用Java3D开发这个程序
答案 0 :(得分:0)
您可以找到一些其他信息in this SO post。
不幸的是,我不相信这足以解决问题,但它让我走上正轨。
以下是我自己解决此问题的示例。
BranchGroup scene = new BranchGroup();
BranchGroup content = new BranchGroup();
content.setCapability(BranchGroup.ALLOW_DETACH);
content.setCapability(Group.ALLOW_CHILDREN_EXTEND);
scene.setCapability(BranchGroup.ALLOW_DETACH);
scene.setCapability(Group.ALLOW_CHILDREN_EXTEND);
scene.setCapability(Group.ALLOW_CHILDREN_WRITE);
scene.compile();
//add the initial set of children to "content"...
content.addChild(directionalLight);
scene.addChild(content);
//initialize a SimpleUniverse object...
universe.addBranchGraph(scene);
稍后在运行时:
content.detach();
content.addChild(newChild);
scene.addChild(content);
我不确定是否有更简单的方法,但不幸的是,仅在创建时设置功能是不够的。虽然你必须分离并重新组织一个组,但这可能比添加一个新的BranchGroup更好,这是另一个可以解决问题的黑客。