Updating the Alien SpriteTimeBehavior acts as a Timer-like object for calling the update( ) method in AlienSprite every 500 milliseconds. The two are linked together by WrapTour3D in its addAlien( ) method: private void addAlien( ) { AlienSprite al = new AlienSprite("hand1.obj", obs, bob); // alien al.setPosition(-6.0, -6.0); sceneBG.addChild( al.getTG( ) ); TimeBehavior alienTimer = new TimeBehavior(500, al); // alien's controls alienTimer.setSchedulingBounds( bounds ); sceneBG.addChild( alienTimer ); } The TimeBehavior class is simpler than TouristControls since its processStimulus( ) method being called is enough to trigger the call to update( ): public class TimeBehavior extends Behavior { private WakeupCondition timeOut; private AlienSprite alien; public TimeBehavior(int timeDelay, AlienSprite as) { alien = as; timeOut = new WakeupOnElapsedTime(timeDelay); } public void initialize( ) { wakeupOn( timeOut ); } public void processStimulus( Enumeration criteria ) { alien.update( ); // ignore criteria wakeupOn( timeOut ); // re-register } } The wakeup criterion is an instance of WakeupOnElapsedTime. |