2016-08-09 2 views
0

Я пытаюсь добавить 1 из 5 изображений в атласе случайно, но все они отображаются один поверх другого, есть ли способ исправить это? В принципе, я хочу, чтобы 1 из спрайтов отображался на любом из 5 каждый раз, когда я запускаю свой уровень, но все, что я получаю, - это все 5 одновременно.Отображение случайного спрайта от Atlas Phaser

///Declaration 
 

 
this.load.atlas('Monsters', 'images/monsters.png', 'images/monsters.json'); 
 

 

 
////Where I call sprite 
 

 
this.figuritaspega = this.game.add.sprite(0, 0, 'Monsters'); 
 
     this.figuritaspega.frame = this.rnd.integerInRange(0,4); 
 
     this.figuritaspega = this.game.add.group; 
 
     this.figuraarriba = this.add.sprite(1015, 140, this.figuritaspega); 
 
     this.figuraarriba.scale.set(0.9 , 0.9); 
 

 
////.json below 
 

 
{"frames": [ 
 

 
{ 
 
\t "filename": "amarillo.png", 
 
\t "frame": {"x":0,"y":0,"w":188,"h":200}, 
 
\t "rotated": false, 
 
\t "trimmed": false, 
 
\t "spriteSourceSize": {"x":0,"y":0,"w":188,"h":200}, 
 
\t "sourceSize": {"w":188,"h":200} 
 
}, 
 
{ 
 
\t "filename": "azul.png", 
 
\t "frame": {"x":188,"y":0,"w":240,"h":200}, 
 
\t "rotated": false, 
 
\t "trimmed": false, 
 
\t "spriteSourceSize": {"x":0,"y":0,"w":240,"h":200}, 
 
\t "sourceSize": {"w":240,"h":200} 
 
}, 
 
{ 
 
\t "filename": "naranja.png", 
 
\t "frame": {"x":428,"y":0,"w":162,"h":200}, 
 
\t "rotated": false, 
 
\t "trimmed": false, 
 
\t "spriteSourceSize": {"x":0,"y":0,"w":162,"h":200}, 
 
\t "sourceSize": {"w":162,"h":200} 
 
}, 
 
{ 
 
\t "filename": "rojo.png", 
 
\t "frame": {"x":590,"y":0,"w":190,"h":200}, 
 
\t "rotated": false, 
 
\t "trimmed": false, 
 
\t "spriteSourceSize": {"x":0,"y":0,"w":190,"h":200}, 
 
\t "sourceSize": {"w":190,"h":200} 
 
}, 
 
{ 
 
\t "filename": "rosa.png", 
 
\t "frame": {"x":780,"y":0,"w":231,"h":200}, 
 
\t "rotated": false, 
 
\t "trimmed": false, 
 
\t "spriteSourceSize": {"x":0,"y":0,"w":231,"h":200}, 
 
\t "sourceSize": {"w":231,"h":200} 
 
}], 
 
"meta": { 
 
\t "app": "http://www.codeandweb.com/texturepacker", 
 
\t "version": "1.0", 
 
\t "image": "monsters.png", 
 
\t "format": "RGBA8888", 
 
\t "size": {"w":1011,"h":200}, 
 
\t "scale": "1", 
 
\t "smartupdate": "$TexturePacker:SmartUpdate:41785e106df91b6daf42364753f15c41:5fca3c08999ac8d93eabfac98fafaf65:8fc4d3ec51ba7bc700054b5f64cf62b1$" 
 
} 
 
}

ответ

1

Я действительно не знаю, что вы пытаетесь сделать здесь, но я знаю, что есть несколько ошибок программирования.

Сначала добавьте Phaser.Sprite и присвоить его вар figuritaspega это хорошо, но тогда вы создаете Phaser.Group и назначить, что также к тому же вар figuritaspega? Я думаю, что лучше иметь отдельную переменную для группы.

Во-вторых, add.group является вызовом функции, поэтому вы должны добавить () в указатель, это вызов функции вместо назначения функции переменной.

И, наконец, когда вы добавляете спрайт figuraarriba параметры являются 1015, 140, this.figuritaspega, но ожидаемые параметры x,y,key,frame (see here), так что в основном вы передаете спрайт/группу this.figuritaspega, как будто это spritesheet ? Это не сработает.

Как я уже сказал, я не совсем уверен, что вы пытаетесь сделать здесь, или в чем причина добавления только одного спрайта в группу? Но я думаю, может быть что-то, как это будет работать:

// create a sprite, random frame 0..4 
this.figuritaspega = this.game.add.sprite(0, 0, 'Monsters'); 
this.figuritaspega.frame = this.rnd.integerInRange(0,4); 

// create a group 
this.mysprites = this.game.add.group(); // <- function call 
this.mysprites.add(this.figuritaspega); 

// scale entire group and reposition group 
this.mysprites.scale.set(0.9 , 0.9); 

// notice that the sprite position is relative to the group position 
this.mysprites.x = 10; 
this.mysprites.y = 20; 
+0

Спасибо за советы помогло много :), это (this.rnd.integerInRange (0,4); ) и фиксируя мои ошибки сделали трюк. – Rafahc