专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > J2ME

刚做的飞机游戏,遇到有关问题,

发布时间:2010-06-05 12:28:37 文章来源:www.iduyao.cn 采编人员:星星草
刚做的飞机游戏,遇到问题,请指教!
主要就是飞机飞行的问题
主线程控制变化为:delay=20
  public   void   run()   {
          Graphics   g   =   getGraphics();
       
          while   (isPlay)   {
         
                  this.drawScreen(g);
                  g.setColor(0xffffff);
 
                  flushGraphics();
                  if   (buls.collidesWith(plane))
                  {              
                  this.Gameover(g);
               
                  flushGraphics();
                  isPlay=false;
                  }
                  Planeinput();
                  buls.fly();
                  try   {
                          Thread.sleep(delay);
                  }
                  catch   (InterruptedException   ie)   {}
          }
       
  }

问题:目前在电脑上运行没问题,速度正常
在手机上飞行速度大大降低,并且按方向钮控制还会有延迟

是内存问题还是什么,请指教,谢谢

------解决方案--------------------
估计是你框架有问题。现在的机能运行个入门级别的飞机游戏还是足够的。
虚拟机用一个线程处理UI。也就是说,这一个线程要做绘制屏幕的工作以及按键处理的工作。这样,如果你绘制屏幕很频繁,必然会影响到按键处理的即时相应。反过来也同理。
一般的处理办法是,尽量降低这个线程处理的工作强度。比如,按键事件中只记录相关按键信息,不处理涉及游戏逻辑的东西。游戏绘图改为画在一个离线缓冲区上,paint中只做把缓冲区输出到屏幕的工作。这样,做的事情一样多,但尽量转移系统UI线程的压力,可以得到快速的按键反应以及可控的屏幕刷新率。

顺便:游戏主线程逻辑处理最好不要和刷新率挂钩。否则在不同绘制能力的机器上,将会得到天壤之别的游戏速度。
------解决方案--------------------
其实缓冲区说白了,就是创建一个跟屏幕大小的Image,你原来怎么画到屏幕上的,不要改变,现在就怎么画到那个Image对象上,然后在把Image一次性的画到屏幕上,这样做可以节省程序画屏的时间,提高效率,但是要多耗一定的内存
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: