我们在J2ME中继承Canvas类的时候一般会再实现Runnable接口,实现多线程的效果个人认为实际上这边的线程不过是起到一个定时器的作用,完全可以用一个Timer或者用一个Inner class来实现这个的功能,在这里不对这个做过多的讨论。
我们的run()这个函数一般是实现这样的功能,定时的处理游戏逻辑gameLogic()和重画屏幕paint()。注意这里的定时是本文的重点,如果执行游戏逻辑和重画屏幕的间隔时间不为固定的话。一定破坏游戏性和游戏画面的真实性。
<
在J2ME游戏开发中,使用Thread.sleep(500)来保证游戏逻辑和画面刷新的间隔可能不准确。由于gameLogic()和paint()的执行时间变化,导致实际间隔时间不固定,影响游戏体验。解决方案是计算这两个方法的执行时间,并根据剩余时间调整线程睡眠,以确保固定间隔。通过比较当前时间与上一次执行时间的差值,如果小于预设的RUN_RATE,则让线程补足剩余时间,从而实现稳定间隔。
我们在J2ME中继承Canvas类的时候一般会再实现Runnable接口,实现多线程的效果个人认为实际上这边的线程不过是起到一个定时器的作用,完全可以用一个Timer或者用一个Inner class来实现这个的功能,在这里不对这个做过多的讨论。
我们的run()这个函数一般是实现这样的功能,定时的处理游戏逻辑gameLogic()和重画屏幕paint()。注意这里的定时是本文的重点,如果执行游戏逻辑和重画屏幕的间隔时间不为固定的话。一定破坏游戏性和游戏画面的真实性。
<
2002
1028

被折叠的 条评论
为什么被折叠?