2011-01-28 48 views
1

寫的遊戲我寫這個程序,但它具有異常的線與Java3D的

group.addChild(tg); 

但是當我添加

TransformGroup tg = new TransformGroup(); 

進入for循環塊與任何問題,運行,請告訴我它的原因。

謝謝。

這是我的代碼

public BranchGroup Creat() 
{ 
    BranchGroup group = new BranchGroup(); 
    TransformGroup tg = new TransformGroup(); 
    for(float x = 0.0f; x < 1.0f; x += 0.1f) 
    { 
     Transform3D td = new Transform3D(); 
     Vector3f vector3f = new Vector3f(x, x, x);    
     td.setTranslation(vector3f); 
     tg.setTransform(td); 
     tg.addChild(new Cone(0.05f, 0.1f)); 
     group.addChild(tg);    
    } 



    return group; 
} 

這是它的異常

Exception in thread "main" javax.media.j3d.MultipleParentException: Group.addChild: child already has a parent 
    at javax.media.j3d.GroupRetained.checkValidChild(GroupRetained.java:478) 
    at javax.media.j3d.GroupRetained.addChild(GroupRetained.java:487) 
    at javax.media.j3d.Group.addChild(Group.java:290) 
    at t39.Draw.Creat(Draw.java:68) 
    at t39.Draw.<init>(Draw.java:50) 
    at t39.Main.main(Main.java:22) 
+2

11個問題,並沒有公認的答案...好運氣 – mkoryak 2011-01-28 17:31:26

回答

1

在場景圖中的同一個元素不可能存在一次以上。當您在循環中創建新的TransformGroup時,它不會破壞規則,但如果您沒有爲每個addChild()創建一個新規則,則會違反此規則。

(也有例外「只有在圖形一次」,通過引用較弱,而不是父/子,例如用於屬性)