Phaser更新精灵纹理

时间:2016-04-13 15:13:34

标签: javascript phaser-framework

我在更新精灵时遇到问题。

我创造了一个改变衣服的功能。这应该像:

// Something like this.
pet = pet_with_hat

js / main.js第387行的https://github.com/futer/pandachii处有代码。

当我写这篇文章时:

this.pet = this.game.add.sprite(90,90, 'pet_black_hat')

有一个错误:

 Uncaught TypeError: Cannot read property 'health' of undefined
 GameState.update @ main.js:194
 Phaser.StateManager.update @ phaser.js:16628
 Phaser.Game.update @ phaser.js:23092
 Phaser.RequestAnimationFrame.updateRAF @ phaser.js:41421
 _onLoop @ phaser.js:41407

如何将此宠物的精灵图像更改为另一个?

我将不胜感激。

3 个答案:

答案 0 :(得分:5)

对于Phaser 3,您可以使用setTexture

carSprite.setTexture('tank')

答案 1 :(得分:3)

  • 如果您使用scene.add.image(...)添加了图片,则可以使用, carSprite.setTexture('tank')

  • 如果要在与scene.load.atlas(...)加载的相同纹理图集中选择其他精灵,则可以调用carSprite.setFrame('tank')

  • 如果要在完全不同的纹理图集中选择一个精灵,则可以调用carSprite.setTexture('newTextureAtlasKey', 'tank')

希望这会有所帮助。

答案 2 :(得分:1)

问题是您是用新的this.pet替换现有的Phaser.Sprite,而后者没有您设置的任何自定义属性。

您可以使用loadTexture()替换宠物精灵所用的图像。

this.pet.loadTexture('pet_black_hat');