TiledSpritemap
TiledSpritemap 用于使单个动画精灵平铺(例如,32x32px)跨 X 或 Y(或两者)平铺。例如,如果你有熔岩精灵表,其中包含 7 个沸腾的熔岩精灵,并且你想创建熔岩池,你可以使用这个类。使用示例:
// embed a resource somewhere in your class
[Embed(source = "../../assets/lava.png")]
private var lavaGfx:Class;
public function AnimatedEntity ()
{
var spriteWidth:uint=32;
var spriteHeight:uint=32;
var objectWidth:uint=100; // pool of lava, that has 100px width
var objectHeight:uint=32;
var t = new TiledSpritemap(this.lavaGfx, spriteWidth, spriteHeight, objectWidth, objectHeight );
t.add("boil", [0, 1, 2, 3, 4, 5, 6], 4, true);
graphic = hb;
t.play("boil");
}
其中,您应该使用 spritesheet(例如 32x32)中单个精灵的宽度和高度,而不是 spriteWidth 和 spriteHeight,而不是objectWidth和objectHeight -对象的所需宽度和高度。函数t.add具有以下属性: 调用“播放”时将使用的动画名称;要进行动画处理的帧索引数组;动画的帧率;布尔值,设置动画是否应该循环。
精灵图
Spritemap 可用于从一个 spritesheet 制作一堆不同的动画,使用代码,类似于上面提到的代码:
public function AnimatedEntity ()
{
var spriteWidth:uint= 32;
var spriteHeight:uint= 32;
var t = new Spritemap(enemyGfx, spriteWidth, spriteHeight);
t.add("run", [0, 1, 2], 10, true);
t.add("jumpUp", [3, 4], 9, true);
t.add("jumpDown", [5, 6], 9, true);
t.add("attack", [7, 8, 9], 10, true);
t.add("standIdle", [10, 11, 12], 10, true);
}
目前,开箱即用的 FlashPunk 无法使用由不同大小的 sprite 组成的 spritesheets(或 Atlases,因为它在其他 2d 游戏引擎中被称为)。