较早前LGame示例下载地址:http://loon-simple.googlecode.com/files/LGame-Simple-0.2.5.7z
最新版LGame(0.2.6)下载地址:http://loon-simple.googlecode.com/files/LGame-0.2.6.rar
1、如何启动LGame
目前的LGame提供有J2SE以及Android两个开发版本,两版的主要类及函数虽然相同,但由于Android版对应于手机环境,而J2SE版对应于PC环境,所以依旧有少许的差别。
J2SE版:
在J2SE环境下,只需要在Main函数中构造如下内容即可。
Android版:
而在Android版中,我们则需要分两步走,一是需要配置相关的AndroidManifest.xml 文档。
如下所示:
而调用的方法如下:
这时LGame框架就会根据我们所实现的不同Screen,来展示我们的游戏了(很简单吧)。
2、如何构建Screen类
Screen是一个抽象类,也是LGame框架所提供的游戏界面展示器,其中封装了基本的图形接口与相关的操作设备交互函数,在LGame框架中,可以直接作为游戏界面进行展示的Screen共有三种。
一、Screen
即最基本的Screen,包含了最基本的Screen函数,默认自动刷新游戏画面(根据FPS所设定的速度),不提供repaint以及getLGraphics方法,是提供LGame框架调用的最基本Screen形态。
J2SE版使用方式如下:
另外,在 Screen 中还有一个重要的 alter 函数,我们可以通过重载 alter 函数实现最简单的定时操作,譬如 :
// 设定计时器,每隔 1 秒允许执行一次
LTimer timer = new LTimer(LSystem. SECOND );
// 重载 alter 函数
public void alter(LTimerContext context){
if ( timer .action(context.getTimeSinceLastUpdate())){
}
}
Android版使用方式如下:
Android 版 Screen API 与使用方法基本等价于 J2SE 版,但由于手机与 PC 间功能有所差别,所以具体的 API 名及函数有所不同。
关于 alter 函数部分完全一致。
二、ThreadScreen
J2SE版:
ThreadScreen 是一个实现了 Runnable 接口的 Screen ,它采用 double buffer 方式将绘图与业务线程分离, gameLoop 函数中即是一个独立的线程。
与标准 Screen 的其它区别在于, ThreadScreen 可以通过 getLGraphics 或 getDraw ( Draw 类为 LGraphics 的简化封装)函数直接获得对 LGraphics 的操作权,并非一定要通过 drawScreen 函数绘图。
Android版:
J2SE 与 Android 版的差别仅仅在于鼠标、键盘等设备函数上,其它细节相同。
三、CanvasScreen
CanvasScreen 是 0.2.6 版中最新提供的 Screen 实现,模拟 J2ME 中 Canvas 而成(也混合了 GameCanvas 的 API ),相关函数在 J2SE 及 Android 版中完全一致。
与标准 Screen 的其它区别在于, CanvasScreen 可以通过 getLGraphics 函数直接获得对 LGraphics 的操作权,并非一定要通过 paint 函数绘图。另外,由于 CanvasScreen 的 Paint 函数并不直接关联父类的 draw 函数,所以 LGame 中提供的精灵或组件无法直接通过 add 函数加载显示,而是只能在 paint 中手动调用相应组件的绘图器进行绘制(关于这点,用惯 J2ME 的朋友应该没什么不习惯的。另外 LGame 提供有配套的 j2me 精灵类包可供使用,为 1 : 1 仿 J2ME 原有 API 实现)。
以下是一个CanvasScreen的使用示例:
//初始化时的精灵动画
//移动时的精灵动画
//背景图片
请注意,为了演示图像扩大机制,示例所用的精灵以及游戏背景图像都非常之小,而实际开发中并非一定要使用图像扩充,更不是只能使用此比例的图像。
下面我制作一个 Sword.java ,这是一个自定义的精灵类,用以显示上图所示的“骷髅剑士”。(在不重新实现 ISprite 的基础上,我们也可以直接使用现成的 Sprite 类来完成此例。但是,关于动作细节部分就只能在精类外部设定或者重载 Sprite 的 update 函数来实现(和实现 ISprite 没什么区别了 ||| ))。
设定一个 CanvasScreenExample.java ,用以继承 CanvasScreen 。
此时,我们只需要根据需要实例化相关的Screen(也就是setScreen),就会得到如下效果:
实际运行效果如下( Android 版效果与此相同, PC 版中窗体实际大小被设定为 480x320 )
PS: 在 CanvasScreen 中也允许完全照搬 J2ME 中 Canvas(GameCanvas) 与相关精灵(内置有 API 1:1 的精灵类相关实现)的构建方式,可以将任何 J2ME 游戏代码平移其中。简单的讲,您在只掌握 J2ME 技术的情况下也可以使用 LGame ,而无需单独学习任何 LGame 框架本身的构建方式。
较早前LGame示例(仅PC版)下载地址:http://loon-simple.googlecode.com/files/LGame-Simple-0.2.5.7z
最新版LGame(0.2.6)下载地址:http://loon-simple.googlecode.com/files/LGame-0.2.6.rar