Phaser 模块模式和精灵
Phaser Module Pattern and Sprites
我正在使用 Phaser 并使用模块模式,创建一个具有 Object.create(Phaser.Sprite.prototype)
原型的模块,并在主模块中创建一个实例。
问题是 sprite 似乎是在 create 函数的主模块中创建的,但是 sprite 的图像没有加载,我找不到问题或设置图像。
非常感谢!!
在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 - script[Player]: error loading asset from URL resources/js/Player.js
和
Phaser.Cache.getImage: Key "playersheet" not found in Cache.
主要内容:
处于预加载状态
game.load.script('Player', 'resources/js/Player.js');
正在创建
testPlayer = new Player(game,77,77);
预加载资产的常用方法是在 Phaser.State
的 preload()
方法中调用加载程序(就像您对 Player.js
所做的那样)。在执行所有加载调用并获取所有需要的资源后,状态管理器只会移动过去 preload()
。是的,如果您有很多不想一次加载的资产,这可能会很不方便,但另一种方法是检查自己是否加载了 spritesheet,这可能会在创建 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);
...但是如果你需要另一个回调,这样它就会变得混乱,而且只有在播放器 spritesheet 是此时唯一要加载的东西时它才有效。
至于找不到 Player.js
的原因,您需要提供相对于 main.js
的路径,因此如果它们在同一目录中,只需提供文件名即可。
我正在使用 Phaser 并使用模块模式,创建一个具有 Object.create(Phaser.Sprite.prototype)
原型的模块,并在主模块中创建一个实例。
问题是 sprite 似乎是在 create 函数的主模块中创建的,但是 sprite 的图像没有加载,我找不到问题或设置图像。
非常感谢!!
在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 - script[Player]: error loading asset from URL resources/js/Player.js
和
Phaser.Cache.getImage: Key "playersheet" not found in Cache.
主要内容:
处于预加载状态
game.load.script('Player', 'resources/js/Player.js');
正在创建
testPlayer = new Player(game,77,77);
预加载资产的常用方法是在 Phaser.State
的 preload()
方法中调用加载程序(就像您对 Player.js
所做的那样)。在执行所有加载调用并获取所有需要的资源后,状态管理器只会移动过去 preload()
。是的,如果您有很多不想一次加载的资产,这可能会很不方便,但另一种方法是检查自己是否加载了 spritesheet,这可能会在创建 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);
...但是如果你需要另一个回调,这样它就会变得混乱,而且只有在播放器 spritesheet 是此时唯一要加载的东西时它才有效。
至于找不到 Player.js
的原因,您需要提供相对于 main.js
的路径,因此如果它们在同一目录中,只需提供文件名即可。