Well, my code uses handlers, which are specific to android, so at least I
thought I'd post my code,
so anyone with any comments on this android-specific code feel free to drop
me a line.
John Goche
class TimeStampedMessage {
TimeStampedMessage(Handler handler, long when, int what) {
this.handler = handler;
this.when = when;
this.what = what;
this.timeStamp = System.nanoTime();
}
static void pauseTimers() {
for (int k = 0; k < TimeStampedMessage.timeStampedMessages.size(); k++)
{
TimeStampedMessage timeStampedMessage =
TimeStampedMessage.timeStampedMessages.get(k);
long oldTimeStamp = timeStampedMessage.timeStamp;
long newTimeStamp = System.nanoTime();
System.out.println("When1: " + timeStampedMessage.when);
System.out.println(oldTimeStamp);
System.out.println(newTimeStamp);
timeStampedMessage.when -= (newTimeStamp - oldTimeStamp) / 1000000L;
System.out.println("When2: " + timeStampedMessage.when);
timeStampedMessage.handler.removeMessages(timeStampedMessage.what);
}
}
static void resumeTimers() {
for (int k = 0; k < TimeStampedMessage.timeStampedMessages.size(); k++)
{
Handler handler =
TimeStampedMessage.timeStampedMessages.get(k).handler;
long when = TimeStampedMessage.timeStampedMessages.get(k).when;
int what = TimeStampedMessage.timeStampedMessages.get(k).what;
TimeStampedMessage.timeStampedMessages.get(k).timeStamp =
System.nanoTime();
Message message = handler.obtainMessage(what);
handler.sendMessageDelayed(message, when);
System.out.println("resuming: when:" + when);
}
}
static void unloadMessages(Handler handler, int what) {
for (int k = 0; k < TimeStampedMessage.timeStampedMessages.size(); k++)
if (TimeStampedMessage.timeStampedMessages.get(k).handler == handler
&&
TimeStampedMessage.timeStampedMessages.get(k).what == what)
TimeStampedMessage.timeStampedMessages.remove(k);
}
Handler handler;
long timeStamp;
long when;
int what;
static List<TimeStampedMessage> timeStampedMessages = new
ArrayList<TimeStampedMessage>();
}
abstract class WorldState {
public abstract void enter(World world);
public abstract void timerExpired(World world, Message msg);
public abstract void update(World world, float deltaTime);
public abstract void exit(World world);
public void sendMessage(World world, long numMillis, int what) {
Message message = world.worldHandler.obtainMessage(what);
world.worldHandler.sendMessageDelayed(message, numMillis);
TimeStampedMessage timeStampedMessage = new
TimeStampedMessage(world.worldHandler, numMillis, what);
TimeStampedMessage.timeStampedMessages.add(timeStampedMessage);
}
public void removeMessages(World world, int what) {
TimeStampedMessage.unloadMessages(world.worldHandler, what);
world.worldHandler.removeMessages(World.WorldHandler.MESSAGE_WHAT_PRESENTATION_GHOST_ESCAPE);
}
}
Regards,
John Goche
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en