2017-02-21 3 views
0

Я работаю с Phaser, и я использую шаблон модуля, создавая модуль с прототипом Object.create(Phaser.Sprite.prototype) и создающий экземпляр этого в основном модуле.Шаблон модуля Phaser и спрайты

Проблема заключается в том, что спрайт создается в основном модуле в функции create, но изображение спрайта не загружается, и я не могу найти проблему или установить изображение.

Большое спасибо!

В Player.js:

// doenst work at all with game.load... on top 
//game.load.spritesheet('playersheet', 'resources/data/foo.png', 64, 64); 
Player = function(game, x, y){ 
    game.load.spritesheet('playersheet', 'resources/data/foo.png', 64, 64); 


    Phaser.Sprite.call(this, game, x, y, 'playersheet'); 
this.anAttribute = 'whatever'; this.anotherAttribute = 20;}; 
Player.prototype = Object.create(Phaser.Sprite.prototype); 
Player.prototype.constructor = Player; 

бросает:

Phaser.Loader - скрипт [Player]: Ошибка загрузки ресурсов из URL ресурсов/JS/Player.js

и

Phaser.Cache .getImage: Ключ «список игроков» не найден в кеше.

главные:

преднагрузка

game.load.script('Player', 'resources/js/Player.js'); 

в создании

testPlayer = new Player(game,77,77); 

ответ

0

Обычный способом поджимать активы является вызовом загрузчика внутри preload() метода Phaser.State (только как вы делаете с Player.js). Диспетчер состояния будет двигаться только после preload() после выполнения всех вызовов загрузки и получения всех необходимых ресурсов. Да, может быть неудобно, если у вас есть много активов, которые вы не хотите загружать сразу, но другим способом было бы проверить себя, загружен ли спрайт, что может привести к задержке при создании Player (плюс кажется, что нет способа проверить отдельные активы, только для всей очереди).

Если вы все еще хотите, чтобы загрузить его вручную, это способ сделать это (не проверял):

game.load.spritesheet('playersheet', 'resources/data/foo.png', 64, 64); 
game.load.start(); 
game.load.onLoadComplete.add(function() { 
    // do the rest of the stuff here 
}, this); 

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

Что касается того, почему он не находит Player.js, вам необходимо указать путь относительно main.js, поэтому, если они находятся в одном каталоге, используйте только имя файла.

+0

спасибо, что это очень помогло и ДЕЙСТВИТЕЛЬНО оценено –

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