论坛首页 移动开发技术论坛

JAVAME学习笔记(4)

浏览 1088 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2009-01-10  
要创建一个新的GameCanvas实例,只能通过继承并调用父类的构造函数:

protected GameCanvas(boolean suppressKeyEvents),

这将使为GameCanvas准备的一个新的缓冲区也被创建并在初始化时被填充为白色。



为了在GameCanvas上绘图,首先要获得Graphics对象来渲染GameCanvas:

protected Graphics getGraphics()

返回的Graphics对象将用于渲染属于这个GameCanvas的后备屏幕缓冲区(off-screen buffer)。 但是渲染结果不会立刻显示出来,直到调用flushGraphics()方法;输出缓冲区的内容也不会改变缓冲区的内容,即输出操作不会清除缓冲区的像素。



每次调用这个方法时,都会创建一个新的Graphics对象;对于每个GameCanvas实例,获得的多个Graphics对象都将渲染同一个后备屏幕缓冲区。因此,有必要在游戏启动前获得并存储Graphics对象,以便游戏运行时能反复使用。



刚创建的Graphics对象有以下属性:

l         渲染目标是这个GameCanvas的缓冲区;
2         渲染区域覆盖整个缓冲区;

3        当前颜色是黑色(black);

4        字体和调用Font.getDefaultFont()返回的相同;

5        绘图模式为SOLID;

6        坐标系统的原点定位在缓冲区的左上角。



在完成了绘图操作后,可以使用flushGraphics()方法将后备屏幕缓冲区的内容输出到显示屏上。输出区域的大小与GameCanvas的大小相同。输出操作不会改变后备屏幕缓冲区的内容。这个方法会直到输出操作完成后才返回,因此,当这个方法返回时,应用程序可以立刻对缓冲区进行下一帧的渲染。



如果GameCanvas当前没有被显示,或者系统忙而不能执行输出请求,这个方法不做任何事就立刻返回。


论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics