hola sres: bueno mi consulta que como dice el titulo como puedo aderir un nodo en tiempo de ejecucion a la escena grafica porque el programa que estoy haciendo en java3d me envia la excepcion add only a node to the branchgroup
aqui les dejo el codigo:
esta es la clase behavior
public class OpenBehavior extends Behavior{
private TransformGroup targetTG;
private WakeupCriterion pairPostCondition;
private WakeupCriterion AWTEventCondition;
private RotationInterpolator rotation;
OpenBehavior(TransformGroup targetTG, RotationInterpolator rotation){
this.targetTG = targetTG;
this.rotation = rotation;
AWTEventCondition = new WakeupOnAWTEvent(MouseEvent.MOUSE_PRESSED);
}
public void setBehaviorObjectPartner(Behavior behaviorObject){
pairPostCondition = new WakeupOnBehaviorPost(behaviorObject, 1);
}
public void initialize(){
this.wakeupOn(AWTEventCondition);
}
public void processStimulus(Enumeration criteria){
if (AWTEventCondition.hasTriggered()){
rotation.setEnable(true); // make door open – code excluded
targetTG.addChild(rotation);
this.wakeupOn(pairPostCondition);
postId(1);
} else {
this.wakeupOn(AWTEventCondition);
}
}
}
y esta es la parte de la clase createSceneGraph donde llamo al behavior
Transform3D eje1 = new Transform3D();
Alpha alpha1 = new Alpha( -1,10000 );
RotationInterpolator rotator1 = new RotationInterpolator( alpha1, posunMerkur, eje1, 0.0f, (float) Math.PI * 2.0f );
rama.detach();
OpenBehavior openObject = new OpenBehavior(posunMerkur,rotator1);
CloseBehavior closeObject = new CloseBehavior(posunMerkur,rotator1);
openObject.setBehaviorObjectPartner(closeObject);
closeObject.setBehaviorObjectPartner(openObject);
openObject.setSchedulingBounds(bounds);
closeObject.setSchedulingBounds(bounds);
posunG1.addChild(openObject);
posunG1.addChild(closeObject);
posunG1 y posunMerkur son los transformgroup
se agradece cualquiera indicacion.
aqui les dejo el codigo:
esta es la clase behavior
public class OpenBehavior extends Behavior{
private TransformGroup targetTG;
private WakeupCriterion pairPostCondition;
private WakeupCriterion AWTEventCondition;
private RotationInterpolator rotation;
OpenBehavior(TransformGroup targetTG, RotationInterpolator rotation){
this.targetTG = targetTG;
this.rotation = rotation;
AWTEventCondition = new WakeupOnAWTEvent(MouseEvent.MOUSE_PRESSED);
}
public void setBehaviorObjectPartner(Behavior behaviorObject){
pairPostCondition = new WakeupOnBehaviorPost(behaviorObject, 1);
}
public void initialize(){
this.wakeupOn(AWTEventCondition);
}
public void processStimulus(Enumeration criteria){
if (AWTEventCondition.hasTriggered()){
rotation.setEnable(true); // make door open – code excluded
targetTG.addChild(rotation);
this.wakeupOn(pairPostCondition);
postId(1);
} else {
this.wakeupOn(AWTEventCondition);
}
}
}
y esta es la parte de la clase createSceneGraph donde llamo al behavior
Transform3D eje1 = new Transform3D();
Alpha alpha1 = new Alpha( -1,10000 );
RotationInterpolator rotator1 = new RotationInterpolator( alpha1, posunMerkur, eje1, 0.0f, (float) Math.PI * 2.0f );
rama.detach();
OpenBehavior openObject = new OpenBehavior(posunMerkur,rotator1);
CloseBehavior closeObject = new CloseBehavior(posunMerkur,rotator1);
openObject.setBehaviorObjectPartner(closeObject);
closeObject.setBehaviorObjectPartner(openObject);
openObject.setSchedulingBounds(bounds);
closeObject.setSchedulingBounds(bounds);
posunG1.addChild(openObject);
posunG1.addChild(closeObject);
posunG1 y posunMerkur son los transformgroup
se agradece cualquiera indicacion.