EaselJS MultiRow Spritesheet

时间:2013-03-07 16:31:18

标签: javascript html5 sprite sprite-sheet easeljs

我有一个小问题,我正在使用多行Spritesheet,其中每一行都是一系列图像。

但是我不能让精灵表从另一个高度开始(所以它可以向下移动),它们都从顶角开始

 var spriteSheetUp = new createjs.SpriteSheet({
    // image to use
    images: [snakeI],
    // width, height & registration point of each sprite
    frames: {width: 96, height: 90, regX: 0, regY: 290},
    animations: {
        move: [0, 3, "move"]
    }
});

我希望上面开始使用像素290处的帧。

提前致谢!

1 个答案:

答案 0 :(得分:2)

好吧,我有多行的spritesheet,并假装它包含3行图像,其中包含以下点:

x, x, x, x, // moving animation images
x, x, x, x, // jumping animation images
x, x, x, x, // dying animation images

所有图像插槽的高度和宽度都是80px,它们在spritesheet中紧密堆叠在一起,它们的中心位于图像的中间,我使用的实际字符大小是40px(宽度和高度)所以它是regX: 40regY: 40以及spritesheet img size将是320px的宽度和高度。 (因为四个80px * 4 = 320px的插槽)。

我会像这样访问它们:

var localSpriteSheet = new createjs.SpriteSheet({
        images: [imgPlayer],
        frames: {width:80, height:80, regX:40, regY:40},
        animations: {
            moving: [0,3],
            jumping: [4,7],
            dead: [8,11]
        }
});

我认为你在这里看到了模式,例如jumping的起始数是4,因为磁贴编号从0开始。

因此,以上tileheet的实际插槽是:

0, 1, 2, 3, // moving animation images
4, 5, 6, 7, // jumping animation images
8, 9, 10, 11, // dying animation images

希望这可以帮助你 - 你只需要观看动画的spritesheet起始位置“移动”并从那个前进开始。

// takes 4 images from first line
move: [0, 3] 

// takes 4 images from second line (If spritesheet has 4 images on each line).
jump: [4, 7] 

希望这有帮助!