vas 类 为了能有程序开发人员控制接口的外观和行为,需要使用大量的初级用户接口类,尤其在游戏程序中,几乎完全依赖的就是 Canvas 抽象类进行绘图。
从程序开发的观点看,Canvas 类可与高级 Screen 类交互,程序可在需要时在 Canvas 中掺入高级类的组件。
Canvas提供了键盘事件、指点杆事件(如果设备支持),并定义了允许将键盘按键映射为游戏控制键的函数。
键盘事件由键代码指定,但这样控制游戏会导致缺乏通用性,并不是每个设备的键盘布局都适合游戏的操作。
应当将键代码转换为游戏键的代码,以便硬件开发商能定义他们自己的游戏键布局。
3.4 Graphics 类 Graphics 类提供了简单的 2D 绘图功能。
它具有 24 位深度色彩的绘制能力,以三原色分别各占一个字节表示其颜色。
GameCanvas 程序只能在 paint函数中使用 Graphics 绘制,可调用 getGraphics函数直接绘制在缓冲区上,可以在任何时间请求传输到前台。
其对象会被传给 Canvas 的 paint函数,以便最终显示。
3.5 MIDP1.0 技术下的绘制背景技术 在没有 MIDP2.0 前,进行游戏绘图一般需要手动编程使用双缓冲。
需要在 paint方法内将所想要画的图形画在一张预先准备好的背景上,等所有绘图操作都完成后再将背景的数据拷贝到实际的屏幕上。
Image 类提供了一个建立背景的静态方法 createImageintwidth int height,再利用 getGraphics方法取得属于这个背景的 Graphics 对象,所进行的绘图操作都会作用在背景上,等到全部的绘图操作完成后,再调用 drawImage方法将背景的数据复制到实际显示的屏幕上。
这样的技术在绘制动画时特别有用。
绘制动画时经常需要不断地更新画面,而更新画面的操作就是先将屏幕以 fillRect的方式清除,再将下一张图片画在屏幕上,然而反复的清除及重绘会造成屏幕的闪烁现象(flicker),因此使用双重缓冲的好处就是在背景进行这个清除及重绘的操作,再将完成的绘图拷贝到屏幕上,由于用户看不到清除的操作,因此就不会出现闪烁的现象了。
不过在某些 MIDP 的实现上已经加上了双重缓冲的支持,因此在处理前应先利用 Canvas 类的 isDoubleBuffer方法来判断。
3.6 MIDP2.0 新增的 GameCanvas 包 J2ME 的流行促进几个运营商和制造商开发了一些支持游戏的类,但是,这却造成了游戏缺乏可移植性的问题,例如,很难将使用 Siemens 的 Sprite 类的游戏移植到 Nokia 上。
在 MIDP2.0 版本发布后,这些游戏移植性问题初步得到了解决。
MIDP2.0 新加入了GameCanvas、Sprite、Layer、LayerManager、TiledLayer 五个与游戏开发相关的类。
其中 Layer 类一般不会直接用到。
Game 类的出现不仅降低了错误出现的几率,也使游戏代码变的更小,因为开发者不需要自己编写象 Sprite 这种例子。
下面将简要介绍 Game 类。
GameCanvas 类继承自 Canvas,所以具有 Canvas 所具有的功能,还额外增加了一些便于游戏设计的功能。
比如: GameCanvas 类直接提供了 getKeyStates使程序员可以在同一个线程自己侦测按键的状态。
GameCanvas 类提供了 flushGraphics的功能,实现了双缓冲技术。
所谓的 Sprite,就是画面上独立移动的图形。
不同的 frame 可交相显示, Sprite 类是继承自 Layer 的用于存储多桢的基本可视元素。
构成动态的效果。
图片可翻转、颠倒、由一个主角图片就可以方便的得到所有方向的显示状态,相比原先只能使用 Canvas 绘图,需要将所有方向的主角图象都绘制在 png 图象中简化了许多。
Sprite 也可以从整合的图象中读图,读图时将把大图分解为若干等宽等高的小图。
每个小图按照其排列顺序有相应的序号,在程序中调用其序号,就可以绘制出相应的图片。
本程序中的双方飞机、子弹、白云都由 Sprite 继承得到。
LayerManager 提供控制整体画面层的控制。
它包括了一系列自动获取了代号和位置的层,简化了各层加入游戏画面的过程,提供了自动排序和绘制的能力。
LayerManager 存储了一个层的列表,新的层可以用函数附加、删除和插入。
层的序号相当于坐标的 Z 轴,0 层表示最接近用户视觉,层数越高,离用户越远。
层号总是连续的,即使有中间的层被移除, LM 其他层的序号会作相应的调整以保持整体的完整性。
中的 ViewWindow 控制着与 LM 相对坐标的可视区域。
改变 View Window 的位置可以制造出滚动屏幕的效果。
TiledLayer 是有一组图象格元素组成的整块虚拟图象。
该类使不需要高分辨率的图象就能创建大幅图面成为可能。
这项技术通常应用在 2D 游戏平台的滚动背景的绘图。
一块整图可被分割成等大小的图象格,每块格有其对应的序号,按照行列递增。
多块小格可由大块同时替换组合而模拟动态的背景,这不需要逐块替换所有的静态图象格而显得非常方便。
3.7 PNG 图片格式 PNGPortable Network Graphics格式是 MIDlet 唯一支持的图象格式,PNG 具体格式由 PNG SpecificationVersion 1.0 定义的。
PNG 格式提供透明背景的图象,这对绘制游戏画面和被操纵主角极有帮助。
飞机之间或与白云碰撞时就不会因为背景有特定的颜色,显示出的效果像贴上的图片而缺乏真实感,物体之间轻微重叠时.
上一篇:
微型课程的设计研究——以“老年人学电脑”课程为例
下一篇:
关联分类方法在铝电解中的应用研究