|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊成绩
我们在J2ME中承继Canvas类的时分一样平常会再完成Runnable接口,完成多线程的效果团体以为实践上这边的线程不外是起到一个准时器的感化,完整能够用一个Timer大概用一个Innerclass来完成这个的功效,在这里不合错误这个做过量的会商。
我们的run()这个函数通常为完成如许的功效,准时的处置游戏逻辑gameLogic()和重画屏幕paint()。注重这里的准时是本文的重点,假如实行游戏逻辑和重画屏幕的距离工夫不为流动的话。必定损坏游戏性和游戏画面的实在性。
好了,我们看看一样平常的处置办法()
publicvoidrun(){
while(true){
gameLogic();//处置游戏逻辑
repaint();//挪用paint()重画屏幕
Thread.sleep(500);//线程sleep0.5秒
}
}
看上往好象是每次的距离就是0.5秒。不外有无想过假如一个庞大逻辑的游戏gameLogic(),和paint()实践上也是必要很多工夫来处置的,并且关于一个庞大逻辑的游戏来讲每次处置的工夫长度都不不异,大概第一次gameLogic()+paint()的工夫是0.1秒下一次又有多是0.01秒。如许不就形成了距离工夫的不流动吗。以是我们必需把gameLogic(),和paint()的运算工夫盘算出来,就象上面那样。
publicvoidrun(){
time0=System.currentTimeMillis();
while(true){
time1=System.currentTimeMillis();
timePassed=time1-time0;
time0=time1;
gameLogic();//处置游戏逻辑
repaint();
time1=System.currentTimeMillis();
if(time1-time0<RUN_RATE){
try{
Thread.sleep(RUN_RATE-(time1-time0));
}
catch(InterruptedExceptione){
}
}
}
}
java也能做一些底层语言开发做的事情(难度很高,不是java顶尖高手是做不来的), |
|