javascript - Spritesheet 动画消失 p5.js

标签 javascript processing p5.js

我想为珠宝设置动画(请参阅下面的代码和珠宝)。动画有效,但不幸的是,在动画结尾处显示了一张“白色图片”。我的意思是动画不流畅,图片消失了一秒钟(或一帧)。

图片:

enter image description here

杰森:

{
    "frames": [
        {
            "name": "sprite-00",
            "position": {
                "x": 0,
                "y": 0,
                "w": 32,
                "h": 32
            }
        },
        {
            "name": "sprite-01",
            "position": {
                "x": 32,
                "y": 0,
                "w": 32,
                "h": 32
            }
        },
        {
            "name": "sprite-02",
            "position": {
                "x": 64,
                "y": 0,
                "w": 32,
                "h": 32
            }
        },
        {
            "name": "sprite-03",
            "position": {
                "x": 96,
                "y": 0,
                "w": 32,
                "h": 32
            }
        },
        {
            "name": "sprite-04",
            "position": {
                "x": 128,
                "y": 0,
                "w": 32,
                "h": 32
            }
        },
        {
            "name": "sprite-05",
            "position": {
                "x": 160,
                "y": 0,
                "w": 32,
                "h": 32
            }
        },
        {
            "name": "sprite-06",
            "position": {
                "x": 192,
                "y": 0,
                "w": 32,
                "h": 32
            }
        },
        {
            "name": "sprite-07",
            "position": {
                "x": 224,
                "y": 0,
                "w": 32,
                "h": 32
            }
        },
        {
            "name": "sprite-08",
            "position": {
                "x": 256,
                "y": 0,
                "w": 32,
                "h": 32
            }
        }
    ]
}

Sprite.js:
function Sprite(animation, x, y, speed) {
    this.speed = speed;
    this.x = x;
    this.y = y;
    this.len = animation.length;
    this.animation = animation;
    this.index = 0;

    this.show = function() {
        let index = floor(this.index) % this.len;
        image(this.animation[index], this.x, this.y);
    }

    this.animate = function() {
        this.index = this.index + this.speed;
    }
}

草图.js:
let spritesheetJewelGreen32;
let spritedataJewelGreen32;
let greenJewel = [];
let greenJ = [];

function preload() {
spritedataJewelGreen32 = loadJSON('green-jewel32.json');
  spritesheetJewelGreen32 = loadImage('assets/crystals/crystal-32-green.png');
}

function setup() {
let frames = spritedataJewelGreen32.frames;
  for (let i = 0; i < frames.length; i++) {
    let pos = frames[i].position;
    let img = spritesheetJewelGreen32.get(pos.x, pos.y, pos.w, pos.h);
    greenJewel.push(img);
  }
  for (let i = 0; i < 5; i++) {
    greenJ[i] = new Sprite(greenJewel, i * 100,100, 1);
  }
}

function draw() {
for (let greenJs of greenJ) {
      greenJs.show();
      greenJs.animate();
    }
}

我能做什么?

期待您的回答!

最佳答案

问题很简单。 Sprite 表包含 8 个图像,索引从 0 到 7。但是您在 JSON 中有 9 个条目,索引从 0 到 8。这导致无法从表中读取最后一个 Sprite 和 greenJewel在数组末尾包含一个“空”条目。
从 JSON 中删除最后一个条目 ( "name": "sprite-08", ... ) 以解决该问题。

关于javascript - Spritesheet 动画消失 p5.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59810654/

相关文章:

user-interface - 在加工草图中,我可以控制显示窗口的位置吗?

javascript - 3d 立方体未完美显示

javascript - 表单上的 AJAX 引用错误

javascript - 为什么这组逻辑运算符可以正确工作?

javascript - TypeError : res. 状态不是函数

java - 读取python中的处理

java - 如何将主代码变成一个类(降雪)

javascript - 基于变量在 JavaScript 中创建 Canvas (使用 p5.js)

javascript - 从作为参数传递的变量中删除引号

javascript - 如何使用 Twitter 的 Bootstrap 调用 javascript 函数?