2017-02-14 4 views
1

У меня есть проект с мультигеймой. У меня есть menu.js и много игровой js-страницы.Phaser.js | Удалите tilemap перед изменением состояния

Страница загрузки menu.js, вид правильный. После загрузки моего game.js и возврата в menu.js экран не совпадает. Я пробовал много решений, но ничего не работает. Я бы хотел показать тот же внешний вид с самого начала.

Menu.js перед загрузкой game.js enter image description here

Menu.js после нагрузки game.js enter image description here

Часть menu.js

var menuState = { 
    create: function(){ 
     game.scale.scaleMode = Phaser.ScaleManager.SHOW_ALL; 
     game.scale.setGameSize(1000, 600); 
     game.scale.minWidth = 300; 
     game.scale.minHeight = 180; 
     game.scale.maxWidth = 1000; 
     game.scale.maxHeight = 600; 
     game.scale.pageAlignHorizontally = true; 
     game.scale.pageAlignVertically = true; 
     game.scale.updateLayout(true); 
     game.state.start("game"); 
    }, 
    start: function(){ 

    } 
} 

Часть game.js

this.map = game.add.tilemap('level2'); 
this.map.addTilesetImage('secondMap'); 
this.map.setCollisionByExclusion([13, 14, 15, 16, 46, 47, 48, 49, 50, 51]); 
this.map.setTileIndexCallback(225, this.test3, this); 
this.map.setTileIndexCallback(228, this.test, this); 
this.map.setTileIndexCallback(231, this.test2, this); 
this.layer = this.map.createLayer('Tile Layer 1'); 
this.layer.resizeWorld(); 

Если удалить this.layer.resizeWorld(); и вернуться домой внешний вид правильно, и я думаю, что это map, что делает плохой обратный внешний вид.

Я пробовал:

this.layer.destroy(); 
this.map.destroy(); 
game.world.removeAll() 
game.state.clearCurrentState(); 

, но всегда один и тот же результат.

Если я использую:

game.state.destroy(); 
game.destroy(); 

это удалить все.

Я не вижу, где проблема.

ответ

1

Я также испытал подобную проблему, однако я нашел решение в Google, который служил мне (в моем случае) и серьезно пересмотреть пределы мира:

this.game.world.setBounds(0, 0, this.game.width, this.game.height); 
+0

спасибо. Прекрасно в моем случае тоже! –

0

Я нашел решение. Нужно перерисовать мир width и height после возврата в исходное меню. Также необходимо определить мир width и height для всех игр, которые вы хотите загрузить.

В моем случае:

var menuState = { 
    create: function(){ 
     game.scale.scaleMode = Phaser.ScaleManager.SHOW_ALL; 
     game.scale.setGameSize(1000, 600); 
     game.scale.minWidth = 300; 
     game.scale.minHeight = 180; 
     game.scale.maxWidth = 1000; 
     game.scale.maxHeight = 600; 
     game.scale.pageAlignHorizontally = true; 
     game.scale.pageAlignVertically = true; 
     //------------------------ 
     game.world.width = 1000; 
     game.world.height = 600; 
     //------------------------ 
     game.scale.updateLayout(true); 
     game.state.start("game"); 
    }, 
    start: function(){ 

    } 
} 
Смежные вопросы