刚做的飞机游戏,遇到有关问题,
发布时间: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一次性的画到屏幕上,这样做可以节省程序画屏的时间,提高效率,但是要多耗一定的内存
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
myeclipse上开发j2me的错误提示怎么看(找个好多没有解决的,CSDN能人出来啊......)
对于javame的提示实在无语啊。如下
java.lang.I...
-
命令行执行java程序,含有多个包
我定义了一个java project 叫project1,
然后建立了两个package,(注意都不是jar包)
一个叫animaltestdr...
-
j2me新手问题
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;
public class gamestart extends...
-
j2me中如何用代码判断两次pointerPressed之间的时间差?
j2me中如何用代码判断两次pointerPressed之间的时间差?
------解决方案---...
-
通过电脑上wap浏览器可以进入我的wap网站,但是手机不能上,为什么?
我做了wap网站,通过花生壳挂接到外网上了。
通过电脑上wap浏览器可...
-
不含声音文件,如何播放声音?塞班
今天看了一下“飞信JAVA 1.0版”,安装后,信息提示音跟电子音似的。
解压后,发现只有一堆class文件,和...
-
怎么看wtk的源码?高分求助!
我们平时使用eclipse时,点右键选open declaration,或者按F3即可查看源码。现在我建了一个J2ME Midlet工程...
-
如何使用外部js验证下拉列表是否选择
我想使用js对表单进行验证,其中有一个下拉列表,如何验证这个下拉列表在提交的时候已经做过选...
-
关于GUI的一个问题(分不多了,请谅解)
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class MyMouseAdap...
-
j2me socket读取服务器中文出乱码
conn = (SocketConnection) Connector.open(addr ,Connector.READ_WRITE);
conn.setSocketOpti...