在pixi v3中加载精灵表

时间:2015-11-03 03:45:18

标签: javascript sprite-sheet pixi.js

我正在尝试为我想要编码的游戏学习Pixi.js,但我最难完成一项最基本的任务:加载精灵表。 真正的问题是Pixi v3破坏了与加载精灵的旧方式的兼容性,这显然是PIXI.AssetLoader()。我可以找到的所有教程都使用该方法,但是当我尝试使用它时,PIXI抛出一个错误告诉我使用他们的PIXI.loader.Loader类。我更喜欢使用最新版本的库,所以这很公平。

我在这里查看了他们的文档: http://pixijs.github.io/docs/PIXI.loaders.Loader.html

问题是,文档很稀疏(它甚至没有描述属于该类的方法)。我可以弄清楚如何将单个图像作为纹理加载...我想...但我想加载精灵表!最令人沮丧的是,主页突出宣布支持精灵表加载。那你怎么做的?

根据我能收集的信息,我得到的最好的是:

这是我的精灵表JSON:

{
  "frames": {
    "exampleFrame1.png": {
      "frame": {"x":0, "y":0, "w":100, "h":100},
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": {"x":0, "y":0, "w":100, "h":100},
      "sourceSize": {"w": 100, "h": 100}
    }
  },

  "meta": {
    "image": "./images/example-sprite-sheet.png"
  }
}

这是请求精灵的代码:

var sprite;
var loader = new PIXI.loaders.Loader("./images", 5);
loader.add('example-sprites', 'example-sprite-sheet.json');
loader.on('complete', onAssetLoad);
loader.load();

function onAssetLoad(){
  sprite = PIXI.Sprite.fromFrame("exampleFrame1.png");
  //attach sprite to stage etc...
}

我可能会偏离上面的代码,但我在Pixi的文档中找不到任何内容,甚至他们网站上的所有教程和示例都使用了破碎的PIXI.AssetLoader()方法。< / p>

有没有人知道如何做我在Pixi v3中尝试做的事情?或者更好的是,有谁知道我在哪里可以找到我需要的信息?

1 个答案:

答案 0 :(得分:2)

您的代码看起来很好。我认为你只需要在“图像”之后使用正斜杠:

var loader = new PIXI.loaders.Loader("./images/", 5);

此外,这不是必需的,但如果你只想听一次,你可以使用'once'而不是'on'作为你的事件处理程序。

loader.once('complete', onAssetLoad);

到这里寻找一些很好的例子: http://pixijs.github.io/examples/index.html?s=basics&f=spritesheet.js&title=SpriteSheet%20Animation