May 2005
Intermediate to advanced
998 pages
26h
English
TimeBehavior 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.