首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >removeChild()函数的问题

removeChild()函数的问题
EN

Stack Overflow用户
提问于 2011-01-30 19:45:29
回答 1查看 2.2K关注 0票数 1

我想从BranchGroup中删除一个子函数并使用函数removeChild(),但是出现了异常。这是我的代码的一部分;根是一个分支。

//根是一个分枝群

代码语言:javascript
复制
public BranchGroup Creat()
{
    td.setTranslation(new Vector3d(.5f,.5f,.5f));


    tg.setTransform(td);
    tg.addChild(cube);

    td1.setTranslation(new Vector3d(x, y, z));
    tg1.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
    tg1.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
    collision ob = new collision(cube,bounds);
    collision ob1 = new collision(cube1, bounds);
    root.addChild(ob1);  
    cube.setUserData(new String("cube"));
    tg1.setTransform(td1);
    tg1.addChild(cube1);
    root.addChild(tg);       
    root.addChild(tg1);
    //root.addChild(new ColorCube(.03));

    return root;
}

public void delete(int x)
{        
    root.removeChild(x);
}

这是例外

代码语言:javascript
复制
Exception occurred during Behavior execution:
javax.media.j3d.RestrictedAccessException: Group: only a BranchGroup node may be removed

    at javax.media.j3d.Group.removeChild(Group.java:217)
    at td44.Draw.delete(Draw.java:95)
    at td44.Draw$collision.Remove(Draw.java:240)
    at td44.Draw$collision.processStimulus(Draw.java:216)
    at javax.media.j3d.BehaviorScheduler.doWork(BehaviorScheduler.java:192)
    at javax.media.j3d.J3dThread.run(J3dThread.java:275)

函数在另一个类中使用

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-30 23:13:48

来自Group.removeChild()的Javadoc

抛出: CapabilityNotSetException -如果没有设置适当的功能,并且该对象是活动或编译场景图的一部分

RestrictedAccessException -如果此组节点是活动或已编译场景图的一部分,并且被移除的子节点不是BranchGroup节点

虽然我们还没有看到调用delete()的代码部分,但这种描述可能适合您的情况。

解决方案是将计划在BranchGroup中删除的任何节点包装起来。从代码中可以看出,您可能尝试过这样做,但最终没有。

代码语言:javascript
复制
root.addChild(new BranchGroup());
...
root.addChild(ob1);  
...
root.addChild(tg);       
root.addChild(tg1);

因此,您在根和两个独立对象中添加了一个空组。你可能需要这样做:

代码语言:javascript
复制
BranchGroup bg = new BranchGroup();
root.addChild(bg);
...
bg.addChild(ob1);  
...
bg.addChild(tg);       
bg.addChild(tg1);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4845052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档