J2ME中的 GAME API介绍[12]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

Graphics对象的剪裁区域被设置为与位于(x,y)处的可视窗口的区域一致。 LayerManager将转换Graphics对象的坐标,使得点(x,y)与可视窗口在LayerManager中的坐标系统的位置一致。然后,Layer以一定的次序被渲染。在方法返回前,Graphics对象的坐标转换模式和剪裁区将重置为原先的值。

 

渲染会自动适应Graphics对象的剪裁区域和变换方式。这样,如果剪裁区域不够大,可视窗口仅有部分被渲染。

 

为了提升速度,这个方法可能忽略不可见的Layer,或者全部在Graphics对象剪裁区域以外的Layer。在调用Layerpaint()方法前,Graphics对象并不会重置为一个确定的状态。剪裁区域可能大于Layer的区域,因此,Layer必须自己保证渲染操作在其范围内进行。

 

6.5    一个示例

这里给出一个示例游戏的核心代码。这是一个著名的潜艇游戏的手机版本。由黄晔开发。这是一个良好的游戏入门范本,其中涉及到精灵的使用、Tiled的使用以及碰撞检测等运动类2D-Tile-based游戏常见的问题。希望通过对他的学习给你一些启示。为了配合本章API的讲解,我们省略的大部分的游戏周边代码,这里给出的仅仅是游戏的GameCanvas子类。并且这个类同时包含了游戏的主循环线程。用于教学是再好不过了。你可以在www.j2medev.com的文章区看到完整的游戏设计和源代码。

 

如你所见的,这不是一个产品质量的游戏。他教会你基本的内容,而不是全部。同样这里没有包括什么优化。一下是游戏的截图。另外本游戏所用的资源大多不属于作者,代码仅供非商业用途的学习参考。在此强调想要编译游戏你需要下载完整的源代码。

 

 

请着重注意代码中的一下方法:

l         paintCanvas方法用于渲染;

l         run方法用于游戏的主循环;

l         关于输入捕获的的一点说明是,这个游戏并没有屏蔽键盘事件,他混合使用了主动轮询用于潜艇运动,而开火则采用捕获方式。

 

/*

 * Author: Huang ye(www.hyweb.net)

 * 代码开源, 引用请注明出处

本文关键:J2ME中的 GAME API介绍
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top