使用Flashpunk TiledSpritemap的任何示例?

时间:2013-04-20 18:01:10

标签: actionscript-3 frameworks sprite

Flashpunk框架有" Spritemap.as"将位图Spritesheet应用于实体的类,但框架包括" TiledSpritemap.as"

问题是 - 我可以使用它来为实体应用具有不同动画的单个spritesheet文件吗?

目标是 - 使用一个具有不同精灵的敌人类(在一个spritesheet中)

如果可能,第二个问题是如何设置X& Y偏移,如果精灵具有不同的大小

请在此处查看示例tilesspritemap(它来自VVVVVV) http://i.piccy.info/i7/12c5057ece64edccbf40af5902a6839d/4-57-1421/62678728/sprites.png

1 个答案:

答案 0 :(得分:3)

TiledSpritemap

TiledSpritemap用于将单个动画精灵图块(例如,32x32px)平铺在X或Y(或两者)之间。例如,如果你有熔岩spritesheet,其中包含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");           
}

其中,而不是 spriteWidth spriteHeight ,你应该在spritesheet(例如32x32)中使用单个sprite的宽度和高度,而不是 objectWidth objectHeight - 对象所需的宽度和高度。函数 t.add 具有以下属性:当您调用“play”时,将使用的动画名称;用于制作动画的帧索引数组;动画的frameRate; boolean,用于设置动画是否应该循环。

Spritemap

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无法使用由不同大小的精灵组成的精灵表(或其他2D游戏引擎中调用的Atlases)。