[译]使用Game API创建2D动作游戏(二)
(接上文)
游戏场景就像洋葱头
典型的2D动作游戏包括一个背景和一些活动的人物.尽管你可以自己来画这样的场景,但Game API能让你用layers 来创建场景. 你可以用一个layer来做城市的背景,另一个来做一辆汽车. 将汽车层放到背景层上方就完成了整个的场景. 将汽车做为一个独立于背景和场景中的其它层的层会使对它的操作变得简单.
Game API 通过下面的四个类提供了灵活的对层的支持: Layer 是所有层的抽象父类. 它定义了层的基本属性,包括位置,大小以及是否可见. 每个Layer 的子类必须定义paint() 方法用来在Graphics 上绘制该层. 它的两个具体的子类, TiledLayer 和 Sprite, 应该会满足对2D游戏的需求.
TiledLayer 在创建背景图时会被用到. 你可以用一组小块儿的图片来高效地创建大幅的背景图.
Sprite 是会动的层. 你提供每个动作(帧)的图片然后对它的活动进行完全的控制. Sprite 同时还提供对每个帧的镜像翻转和90°倍数旋转的功能.
LayerManager 是一个非常顺手的类,它记录你的场景中所有的层. 只需调用LayerManager的paint() 方法就可以绘制它所包括的所有层.
使用 TiledLayer
TiledLayer 很简单, 尽管乍一看有些深入的地方不好理解. 最主要的思想就是一个图片源提供一组tiles (切片)用于组成一个大的场景. 例如, 下面的图片尺寸为64 x 48.
图片源 这个图片可以分为12个切片,每个大小为16 x 16 像素. TiledLayer 为每个切片分配一个编号, 从左上角开始为1. 图片源中的切片编号如下所示:
切片编号 编码来创建一个TiledLayer 是想当容易的. 你需要指定行数和列数, 图片源, 以及每个切片的大小. 这段代码说明了如何加载图片源并创建一个TiledLayer.
Image image = Image.createImage(“/board.png”);
TiledLayer tiledLayer = new TiledLayer(10, 10, image, 16, 16);