2017-02-18 15 views
1

Я создаю игру, используя игровой движок phaser. Я создал лист спрайтов и загрузил его. Он поставляется с файлом 256 × 384 .png с моими фреймами и файлом JSON, который, как я предполагаю, содержит информацию о том, как разделить фреймы. Я не знаю, как импортировать лист спрайта с файлом JSON в мою функцию preload(). Я попытался использовать следующий код, но он не работает. Любая помощь будет принята с благодарностью.Как импортировать лист спрайтов с его файлом JSON в мою фазерную игру?

var game = new Phaser.Game(1200, 750, Phaser.AUTO, '', { preload: preload, create: create, update: update }); 
function preload(){ 
    game.load.image('background', 'assets2/background.png'); 
    game.load.json('robot', 'assets2/VillainSpriteSheet_json.json'); 
    game.load.spritesheet('robot', 'assets2/VillainSpriteSheet.png'); 
} 

var villain; 

function create(){ 

var villainjson = game.cache.getJSON('robot'); 

//enable physics 
game.physics.startSystem(Phaser.Physics.ARCADE); 

//create background 
var background = game.add.sprite(0, 0, 'background'); 

//villain 
villain = game.add.sprite(50, 50, 'robot'); 

//enable phsyics 
game.physics.arcade.enable(villain); 
villain.body.bounce.y = .2; 
villain.body.gravity.y = 300; 
villain.body.collideWorldBounds = true; 


} 
+0

У вас есть чтение [Документация] (http://api.jquery.com/jquery.getjson/) – haxxxton

+0

@haxxxton да Я пробовал прочитать его. Мне не очень помогает, к сожалению, потому что я никогда раньше не использовал jQuery. я надеялся, что кто-то сможет объяснить это проще, –

+0

где вы создали спрайт? –

ответ

1

Я думаю, что вы путаете две рамки, JQuery и Phaser. Для загрузки и отображения спрайтов вам не нужен jQuery, просто сделает Phaser.

The load.spritesheet ожидает spritesheet, где все спрайты имеют фиксированную ширину и высоту, так что со всеми спрайтами в макете сетки.

Что у вас есть звучит как spriteatlas, разница в том, что через spriteatlas каждый спрайт может иметь различную ширину и высоту, и все эти ширины и высоту за спрайт описана в прилагаемом файле .JSON.

Так что я думаю, что вы ищете функции load.atlasJSONHash, что-то вроде этого:

function preload(){ 
    //.. 
    game.load.atlasJSONHash('robot', 'assets2/VillainSpriteSheet.png', 'assets2/VillainSpriteSheet_json.json'); 

// and then load a sprite like so 
// Note: 'myframename1' should be some framename from the .json file 
var villain = game.add.sprite(50, 50, 'robot', 'myframename1'); 

И кстати просто уточнить, то load.json в Phaser можно просто загрузить файл .json, например, с для ваших собственных настроенных данных, таких как макеты уровней, диалоги/многоязычные тексты, рекордные данные, шаблоны врагов и т. д.

0

Вы не хотите использовать jQuery getJSON(). Вы хотите, чтобы Phaser один.

Было бы что-то вроде

p = new Phaser.Game(...); 
p.cache.getJSON('foo'); 
p.load.image(...); 
+0

. Вот ссылка на [docs с примером] (http://phaser.io/examples/v2/loader/load-json-file) – haxxxton

+0

спасибо , Моя единственная проблема заключается в том, что она также должна загружать файл .png. Я не уверен, как загрузить лист спрайта .png таким образом, чтобы он соответствовал файлу .json. –

+0

Тогда вам также понадобится метод sprite() для размещения изображения. Дайте мне знать, если это недостаточно ясно, и я расскажу больше, когда я не пытаюсь сделать это с моего телефона :) https://github.com/photonstorm/phaser-examples/blob/master/examples/ loader/load% 20image.js –