读书人

飞机游戏运行缓冲区有关问题!flyingg

发布时间: 2011-12-29 22:09:38 作者: rapoo

飞机游戏运行缓冲区问题!flyingghost(游魂)等高手速来解决
目前做拉个飞机飞行的小游戏
在电脑上运行没问题,在真机上就出问题
飞机是个精灵类,在线程中根据输入来控制飞机运行 delay=20
线程如下
public void run() {
Graphics g = getGraphics();

while (isPlay) {

this.drawScreen(g);//重新绘制画面
g.setColor(0xffffff);

flushGraphics();

Planeinput();//按键输入来调整飞机位置控制飞行

try {
Thread.sleep(delay);
}
catch (InterruptedException ie) {}
}

}

根据flyingghost(游魂)解释,感觉确实应该开辟个缓冲区来进行绘制
但目前有几个疑问
1:现在飞机的精灵类开辟缓冲区?
2:我如何开辟缓冲区?
3:有没有例子,给我看看,完毕


[解决办法]
我已经在你的原帖子回过了,顺便帮你贴过来吧:

其实缓冲区说白了,就是创建一个跟屏幕大小的Image,你原来怎么画到屏幕上的,不要改变,现在就怎么画到那个Image对象上,然后在把Image一次性的画到屏幕上,这样做可以节省程序画屏的时间,提高效率,但是要多耗一定的内存

[解决办法]
书上有讲的
[解决办法]
Image screenBuffer=Image.createImage(WIDTH,HEIHGT);//创建离线缓冲区
Graphics g=screenBuffer.getGraphics();//得到缓冲区的g点

g.drawdrawdrawdrawdraw.........//画。其实都画在screenBuffer上了。


repaint();//叫canvas重绘
serviceRepaints();//宁肯绘制速度降低游戏线程速度降低也不肯丢帧的话加上这句

public void paint(Graphics acturalG){//真正的paint方法里就一句:
actoralG.drawImage(screenBuffer,0,0,Graphics.LEFT|Graphics.TOP);
}

[解决办法]
有个质疑,其实GameCanvas已经是实现双缓冲了。
以上的方法适用于普通的Canvas。
[解决办法]
同问楼上的质疑

读书人网 >J2ME开发

热点推荐