# Animation mit Interpolator starten wenn Key pressed



## Ratzefummel (21. Nov 2014)

Halli Hallo,

also ich bin gerade dabei ein kleines Spiel in Java3D zu programmieren. Kurz zum Spiel ansich. Ich habe ein Gebäude(Schloss) in welches ich nun Türen einbauen möchte. Diese sollen einfach nur zurechtgebastelte cubes sein, die ich dann um einen bestimmten Punkt animiert rotieren lasse. 
Aktuell habe ich eine Tür, die sich auch wunderbar mit einem rotationinterpolator öffnet.
Das Ding ist aber, das sich die Tür natürlich erst ab einem bestimmten Zeitpunkt öffnen soll, trotzdem aber schon bei Programmstart geschlossen erscheinen soll. 
Zum Testen versuche ich es aktuell mit einem KeyListener. Also wenn Taste 8 gedrückt wird soll sich die Tür öffnen. Wenn ich die 8 drücke, erscheint erst dann die Tür und die animation beginnt. 
Was ich brauche ist, dass die Tür von anfang an wenn das Programm startet sichtbar ist(geschlossen) und bei betätigung der 8 die Tür rotiert(sich öffnet).  
Hier mein Code:


```
public void eingangstuer2()
{
	
	ColorCube colorcube = new ColorCube();
	TransformGroup neu2 = new TransformGroup();
	
	
	t.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
	
	Transform3D tgTuer4 = new Transform3D();
	transformgroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
	
	
	tgTuer2.setScale(new Vector3d( 0.0365, 0.1, 0.005 ));
	
	tgTuer2.setTranslation(new Vector3f(0.03f,0f,0f));
	transformgroup .setTransform(tgTuer2);
	

	tgTuer4 .setTranslation(new Vector3f(-0.06f,-0.4425f,-5.057f));
	neu2.setTransform(tgTuer4);
	


	Alpha rotationTuer =new Alpha (1,50000);
	rotationTuer.setStartTime(System.currentTimeMillis());
    
	
	
	
	RotationInterpolator wegTuer = new RotationInterpolator(rotationTuer, t);
	
	wegTuer.setMinimumAngle((float)Math.toRadians(0));
	wegTuer.setMaximumAngle((float)Math.toRadians(180));
	
	wegTuer.setSchedulingBounds(new BoundingSphere(new Point3d(), 1000));
	rotationTuer.finished();
   
	KeyNavigatorBehavior behaviour = new KeyNavigatorBehavior(t);
	
	t.addChild(wegTuer);
	t.addChild(behaviour);
	transformgroup.addChild(colorcube);
	t.addChild(transformgroup);
	
	neu2.addChild(t);
	
	


	BranchGroup branchtuer2 = new BranchGroup();
	
	branchtuer2.addChild(neu2);

	u.addBranchGraph(branchtuer2);

	
}
```


```
else if(e.getKeyChar() == '8'){
			eingangstuer2();		
			}
```

Ich hoffe jemand kennt sich damit aus.

Vielen Dank schoneinmal.

Gruß. Ratze


----------

