Javascript映射/数学/表格

Javascript映射/数学/表格,javascript,math,canvas,sprite,drawimage,Javascript,Math,Canvas,Sprite,Drawimage,好的,你好!我的数学不是最好的,我这里有一张桌子。Th 0 0|50 0|100 0|150 0 0 85|50 85|100 85|150 85 0 170|50 170|100 170|150 170 0 255|50 255|100 255|150 255 左边是x,右边是y,sx和sy代表drawImage(这是我的精灵的布局) 是否有大量的if语句来控制这一点 如果我解释得不够好,参数sprite是int 1到16,表示sprite的

好的,你好!我的数学不是最好的,我这里有一张桌子。Th

    0   0|50   0|100   0|150 0
    0  85|50  85|100  85|150 85
    0 170|50 170|100 170|150 170
    0 255|50 255|100 255|150 255
左边是x,右边是y,sx和sy代表drawImage(这是我的精灵的布局) 是否有大量的if语句来控制这一点

如果我解释得不够好,参数sprite是int 1到16,表示sprite的动画数量(它是一个行走的人),因此1是向下看的空闲动画,2是行走/步进动画,等等,每行向下的方向都会改变

    function sprite(canvas, sprite, frame, x, y){
            var sx, sy = 0, 0
            (insert googleplex of 'if' statments)
            canvas.drawImage(sprite,sx,sy,50,85,x,y,50,85);
    }

假设您的精灵在图像中的排列方式如下:

 0  1  2  3
 4  5  6  7 
 8  9 10 11
12 13 14 15
var xpixels = (spriteId%4)*50;
var ypixels = Math.floor(spriteId/4)*85;
您可以像这样为它们编制索引:

 0  1  2  3
 4  5  6  7 
 8  9 10 11
12 13 14 15
var xpixels = (spriteId%4)*50;
var ypixels = Math.floor(spriteId/4)*85;

x
y
偏移是从左上角开始的,因此
spriteId=5
位于
xpixels=50,ypixels=85

您有一个固定大小的精灵。索引到它应该是一个简单的算术练习,没有
如果需要
语句。我想我可以重新排列精灵,这是一个更容易的数学问题。。。目前它在一个4x4网格中,不知道如何索引它