// AnimateObject.java package util; public abstract class AnimateObject implements Runnable { public AnimateObject () { mySpirit = new Thread(this); myAnimated = false; } public void start () { mySpirit.start(); myAnimated = true; } public void stop () { myAnimated = false; } public void run () { while (myAnimated) { act(); mySpirit.yield(); } } abstract public void act (); public void pause (int howLong) { try { Thread.sleep(howLong); } catch (InterruptedException e) { // nothing to do about it } } private Thread mySpirit; private boolean myAnimated; }