/*---------------------*/ /* Wk81Behavior.java */ /*---------------------*/ import java.awt.event.*; import java.awt.AWTEvent; import java.util.Enumeration; //Enumeration import javax.media.j3d.*; //Java3d import javax.vecmath.*; //Point3f,Color3f public class Wk81Behavior extends Behavior{ private WakeupCondition wakeupConditon; private TransformGroup tg; private Transform3D rot = new Transform3D(); private boolean rotateFlag = false; private int theta=0; public Wk81Behavior(TransformGroup tg){ this.tg = tg; //変更対象の幾何ノード } public void initialize(){ WakeupCriterion[] event = new WakeupCriterion[2]; event[0] = new WakeupOnAWTEvent(KeyEvent.KEY_PRESSED); event[1] = new WakeupOnElapsedFrames(0); wakeupConditon = new WakeupOr(event); wakeupOn(wakeupConditon); System.out.println("--------------------------------"); System.out.println(" r : 時計の回転"); System.out.println("--------------------------------"); } public void processStimulus(Enumeration enumeration){ WakeupCriterion event; AWTEvent[] awtEvent; while(enumeration.hasMoreElements()){ event = (WakeupCriterion)enumeration.nextElement(); if(event instanceof WakeupOnAWTEvent){ //AWTイベント awtEvent = ((WakeupOnAWTEvent)event).getAWTEvent(); processMyKeyEvent(awtEvent); }else if(event instanceof WakeupOnElapsedFrames){ //フレーム経過 processMyFrameEvent(); } } wakeupOn(wakeupConditon); } private void processMyKeyEvent(AWTEvent[] event){ for(int i=0; i360){ theta=0; rotateFlag=false; }else{ rot.rotY(theta*Math.PI/180.0); tg.setTransform(rot); } } } }