Javascript 相位更新精灵纹理

Javascript 相位更新精灵纹理,javascript,phaser-framework,Javascript,Phaser Framework,我在更新精灵时遇到问题 我创建了一个功能来更换衣服。这应该像: // Something like this. pet = pet_with_hat js/main.js中有代码,第387行 当我写这篇文章时: this.pet = this.game.add.sprite(90,90, 'pet_black_hat') 有一个错误: Uncaught TypeError: Cannot read property 'health' of undefined GameState.updat

我在更新精灵时遇到问题

我创建了一个功能来更换衣服。这应该像:

// Something like this.
pet = pet_with_hat
js/main.js中有代码,第387行

当我写这篇文章时:

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 未捕获的TypeError:无法读取未定义的属性“health” 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 如何将此宠物的精灵图像更改为另一个


我将不胜感激。

问题是您正在用新的
相移器.Sprite
替换现有的
this.pet
,该相移器.Sprite没有您设置的任何自定义属性

对于相位器2:

您可以使用替换用于宠物精灵的图像

this.pet.loadTexture('pet_black_hat');
this.pet.setTexture('pet_black_hat');
对于相位器3:

您可以使用替换用于宠物精灵的图像

this.pet.loadTexture('pet_black_hat');
this.pet.setTexture('pet_black_hat');
对于相位器3,您可以使用:

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

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

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


希望这能有所帮助。

我还强烈建议您更新使用的Phaser版本。有些功能现在在某些浏览器中已被弃用,您可能会错过性能改进。经过了大量的教程,破坏性更改的数量通常相对较少,并且很容易找到解决方案。。。这是一个非常简单的解决方法:(非常感谢你的哥们:)还有一个提示:你正在使用大量的小精灵文件,这可能会降低加载速度和性能。我建议使用类似这样的方法将它们都放在一个文件中,将sprite映射保存为JSON TP哈希,然后使用
Phaser.Atlas
加载sprite。