lemmikens Posted November 5, 2018 Share Posted November 5, 2018 Hi, I've checked a couple posts on this forum regarding extending classes in Phaser, but get confused on how it exactly works, below is the code I'm trying to implement to add stats to a sprite: class spriteStats extends Phaser.GameObjects.Sprite { constructor (scene, x, y,myExtra) { super(scene, x, y); this.setTexture('../assets/testsprite.png'); this.setPosition(x, y); } setStats(speed, jump){ var stats = { "speed": speed, "jump": jump, } } getStats(){ return stats } } But when I attempt to create the sprite: var hero = this.add.spriteStats(100, 450, 'hero',0).setInteractive(); hero.setStats(5,5); it gives me a: "Uncaught TypeError: this.add.spriteStats is not a function". I don't think I'm extending the class correctly. Please forgive me, as I'm still relatively new to JavaScript. Thanks! Link to comment Share on other sites More sharing options...
samme Posted November 5, 2018 Share Posted November 5, 2018 var hero = this.add.existing( new spriteStats(this, 100, 450, 'hero', 0) ); LiadIdan and lemmikens 2 Link to comment Share on other sites More sharing options...
lemmikens Posted November 5, 2018 Author Share Posted November 5, 2018 Samme, you have given so may correct answers to so many of these posts. Thanks for taking care of this one, too! Can I ask what exactly this does? Particularly the "existing part" this.add.existing(...) Much appreciated! Link to comment Share on other sites More sharing options...
prob Posted November 5, 2018 Share Posted November 5, 2018 Existing is a factory function, so your sprite gets added to the updateList, displayList, and associates some other things. Rich did a great write up on Game Object Factories in a recent dev log, here; it outlines how to set up factory functions in your constructor. lemmikens 1 Link to comment Share on other sites More sharing options...
Recommended Posts