"Frank C.P. Hsu" wrote:
>
> Hi,
>
> I have use "RotPosPathInterpolator" to create an animation.
> My problem is how to start or stop the animation by press a key?
>
"RotPosPathInterpolator" is a behavior, subclass it and just create the
appropriate
wakeup criterion, it should be something similar to the following code snippet.

Hope it helps
Joerg

--

  http://w5.cs.uni-sb.de/~baus

  Email : [EMAIL PROTECTED]
  Phone : +49-681-302-2016
  Fax   : +49-681-302-4136

Here we go:

import javax.media.j3d.Behavior;
import javax.media.j3d.TransformGroup;
import javax.media.j3d.Transform3D;
import javax.media.j3d.WakeupOnAWTEvent;
import java.awt.AWTEvent;
import java.awt.event.*;
import javax.vecmath.Vector3f;


public class MyKeyNavigatorBehavior extends Behavior {
        private Transform3D tr, tgr;
        private TransformGroup tg;
        private WakeupOnAWTEvent wup;
        private Vector3f vec;
        private float step;
        private double angle;

        public MyKeyNavigatorBehavior(TransformGroup targetTG, float moveStep,
double rotStep ){
                super();
                this.tgr = new Transform3D();
                this.tg = targetTG;
                this.wup = new WakeupOnAWTEvent(KeyEvent.KEY_PRESSED);
                this.step = moveStep;
                this.angle = rotStep;
        }

        public void initialize(){
                System.out.println("Key Behavior init");
                wakeupOn(wup);
                tg.getTransform(tgr);
                System.out.println(tgr.toString());
        }

        public void processStimulus(java.util.Enumeration       criteria){
                KeyEvent event = (KeyEvent) (wup.getAWTEvent())[0];
                int keyCode = event.getKeyCode();

                if (keyCode == KeyEvent.VK_UP || keyCode == KeyEvent.VK_DOWN ||
                          keyCode == KeyEvent.VK_LEFT || keyCode ==
KeyEvent.VK_RIGHT)
                         {
                                switch (keyCode) {
                                        case KeyEvent.VK_UP:
                                        tr = new Transform3D();
                                        vec = new Vector3f(0.0f,0.0f,-step);
                                        tr.setTranslation(vec);
                                        tg.getTransform(tgr);
                                        tgr.mul(tr);
                                        tg.setTransform(tgr);
                                        wakeupOn(wup);
                                return;
                                case KeyEvent.VK_DOWN:
                                        tr = new Transform3D();
                                        vec = new Vector3f(0.0f,0.0f,step);
                                        tr.setTranslation(vec);
                                        tg.getTransform(tgr);
                                        tgr.mul(tr);
                                        tg.setTransform(tgr);
                                        wakeupOn(wup);
                                return;
                                case KeyEvent.VK_LEFT:
                                        tr = new Transform3D();
                                        tr.rotY(Math.toRadians(angle));
                                        tg.getTransform(tgr);
                                        tgr.mul(tr);
                                        tg.setTransform(tgr);
                                        wakeupOn(wup);
                                return;
                                case KeyEvent.VK_RIGHT:
                                        tr = new Transform3D();
                                        tr.rotY(-Math.toRadians(angle));
                                        tg.getTransform(tgr);
                                        tgr.mul(tr);
                                        tg.setTransform(tgr);
                                wakeupOn(wup);
                        return;
                        }
                } else {wakeupOn(wup);}
        }

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to