12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package animation;
- public class AnimationController {
-
- private Action next;
- private boolean continuous;
- private long lastTime;
- private long timeBetween;
-
- public AnimationController()
- {
- next = null;
- continuous = false;
- lastTime = 0;
- timeBetween = 0;
- }
-
- public Action getNextAction() throws InterruptedException
- {
- long old = lastTime;
- Action ret = null;
- synchronized( this ) {
- while( next == null )
- wait();
- lastTime = System.currentTimeMillis();
- ret = next;
- }
- if( !continuous )
- next = null;
- else
- {
- if( lastTime - old < timeBetween )
- {
- Thread.sleep( timeBetween - ( lastTime - old ) );
- System.out.println( "sleep: " + ( timeBetween - ( lastTime - old ) ) );
- lastTime = System.currentTimeMillis();
- }
- }
- return ret;
- }
-
- public void setContinuous( boolean c )
- {
- this.continuous = c;
- }
-
- public void setTimeBetween( long between )
- {
- timeBetween = between;
- }
-
- public void setNextAction( Action a )
- {
- next = a;
- synchronized( this ) {
- notify();
- }
- }
-
- public boolean isContinuous()
- {
- return continuous;
- }
- }
|