【问题标题】:Loading sprite sheet in pixi v3在 pixi v3 中加载精灵表
【发布时间】:2016-02-03 03:05:17
【问题描述】:

我正在尝试学习 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() 方法。

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

【问题讨论】:

    标签: javascript sprite-sheet pixi.js


    【解决方案1】:

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

    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

    【讨论】:

    • 谢谢!我不知何故错过了那个示例页面。归根结底,老实说,我只是不太了解 Sprite Sheets 是如何通过 TexturePacker 等工具生成的。
    猜你喜欢
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2019-12-17
    • 2012-06-02
    • 1970-01-01
    相关资源
    最近更新 更多