Я хотел создать небольшую игру в . Написал, используя Pixi.js как двигатель рендеринга. Вначале я следовал http://ezelia.com/2013/05/pixi-tutorial/. Были ошибки в коде, но мне удалось их исправить. Теперь я хотел загрузить свой спрайт с pixi. К сожалению, у меня есть ошибка в консоли отладки: Uncaught Error: The frameId 'body.png' does not exist in the texture cache function (baseTexture, frame)
.Невозможно загрузить изображения с pixi.js
Это мой код, чтобы загрузить spritesheet:
var assetsToLoader = ["/pixi/img/Spritesheet.json"],
loader = new PIXI.AssetLoader(assetsToLoader);
loader.onComplete = IntroScene.onAssetsLoaded;
loader.load();
Вот это мое IntroScene.onAssetsLoaded()
метод:
private static onAssetsLoaded() {
for (var i = 0; i < IntroScene.images.length; i++) {
var frameName = IntroScene.images[i],
texture = PIXI.Texture.fromFrame(frameName);
IntroScene.textures.push(texture);
}
}
Это мой IntroScene.images
:
private static images: any = [
"body.png",
"curvedBody1.png",
"curvedBody2.png",
"head.png",
"tail.png",
"smallFood.png",
"bigFood.png",
"background.png"
];
И наконец Spritesheet.json
генерируется с текстурой пакера (http://www.codeandweb.com/texturepacker):
{"frames": [
{
"filename": "background.png",
"frame": {"x":2,"y":2,"w":64,"h":64},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":64,"h":64},
"sourceSize": {"w":64,"h":64}
},
{
"filename": "bigFood.png",
"frame": {"x":68,"y":2,"w":40,"h":40},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":40,"h":40},
"sourceSize": {"w":40,"h":40}
},
{
"filename": "body.png",
"frame": {"x":2,"y":68,"w":40,"h":40},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":40,"h":40},
"sourceSize": {"w":40,"h":40}
},
{
"filename": "curvedBody1.png",
"frame": {"x":44,"y":68,"w":40,"h":40},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":40,"h":40},
"sourceSize": {"w":40,"h":40}
},
{
"filename": "curvedBody2.png",
"frame": {"x":86,"y":68,"w":40,"h":40},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":40,"h":40},
"sourceSize": {"w":40,"h":40}
},
{
"filename": "head.png",
"frame": {"x":2,"y":110,"w":40,"h":40},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":40,"h":40},
"sourceSize": {"w":40,"h":40}
},
{
"filename": "smallFood.png",
"frame": {"x":44,"y":110,"w":40,"h":40},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":40,"h":40},
"sourceSize": {"w":40,"h":40}
},
{
"filename": "tail.png",
"frame": {"x":86,"y":110,"w":40,"h":40},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":40,"h":40},
"sourceSize": {"w":40,"h":40}
}],
"meta": {
"app": "http://www.codeandweb.com/texturepacker ",
"version": "1.0",
"image": "Spritesheet.png",
"format": "RGBA8888",
"size": {"w":128,"h":256},
"scale": "1",
"smartupdate": "$TexturePacker:SmartUpdate:a9757ea06ba8b63665a1e5d45be72609$"
}
}
Я был бы очень признателен, если бы кто-то помог мне.
Спасибо. Я думал, что Texture.fromFrame является статическим методом, но документы подтверждают ваши слова. Я попытаюсь исправить свой код завтра и написать, как все происходит. –
К сожалению, мне не удалось выполнить эту работу, поэтому, наконец, я решил загрузить разделенные изображения, которые легко реализовать. –