<b>J2ME游戏开辟本领</b>[Java编程]
本文“<b>J2ME游戏开辟本领</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
不久前我曾用J2ME开辟了一个MotoT720下的彩色游戏—宝石方块(GridOne).开辟历程中堆集了一些经验,目前写出来与大家分享.
利用双缓冲避免屏幕闪耀
双缓冲技术是编写J2ME游戏程序的关键技术之一.实际上,双缓冲技术是计算机动画的一项传统技术.造成屏幕闪耀的主要缘由在于,画面在显示的同时,程序又在改变它,于是画面闪耀.办理办法就是在内存中开辟一片区域作为后台画面,程序对它更新,改正,完成后再显示它.这样被显示的图象永久是已经完好画好的图象,程序改正的将不是正在被显示的图象.当然还有别的办法可以办理屏幕闪耀问题,但利用双缓冲技术是一种值得举荐的办理筹划.具体办法可拜见以下代码:
public class BlocksCanvas extends Canvas implements Runnable
{
Graphics bg;
Image buf;
public BlocksCanvas()
{
......
height = getHeight();
width = getWidth();
//按屏幕大小成立缓冲对象
buf = Image.createImage(width, height);
//将缓冲对象的Graphics附给bg
bg = buf.getGraphics();
......
}
public void run()
{......
for(i=0;i<ROWS;i++)
{
for(j=0;j<COLS;j++)
{//画方块
drawBlock(x,y);
}
}
repaint();
}
private void drawBlock(int block_x, int block_y)
{
//获得方块的坐标
int x = getLeft(block_x);
int y = getTop(block_y);
//获得方块的颜色
int c= board[block_x][block_y];
bg.drawImage(imgs[c], x, y, Graphics.TOP | Graphics.LEFT);
}
public void paint(Graphics g)
{
g.drawImage(buf, 0, 0, Graphics.TOP | Graphics.LEFT);
}
}
由上面代码可见,双缓冲思惟表目前程序上就是要顺次完成以下几步工作:
1.定义一个Graphics对象bg和一个Image对象buf,按屏幕大小成立一个缓冲对象附给buf,然后获得buf的Graphics对象附给bg.在这里,Graphics对象可以理解为缓冲的屏幕,Image对象则可当作缓冲屏幕上的图片.
2.在bg(缓冲屏幕)上用drawImage()和drawString等语句画图,相当于在缓冲屏幕上画图.
3.调用repaint()语句,它的功效是奉告系统调用paint()来完成真实屏幕的显示.这里需求注意的是,paint()是一个系统调用语句,不妙手工调用,只能通过paint()语句来调用.
4.在paint(Graphics g)函数里,将buf(缓冲屏幕上的图片)画到真实屏幕上.
以上的步骤固然看似烦琐,但是效果还是很不错的.假如想要在屏幕上显示什么东西,只管画在bg上,然后调用repaint()将其显示出来便可以了.
以上是“<b>J2ME游戏开辟本领</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |