Sign in to follow this  
lemmikens

Extending Phaser.GameObjects.Sprite Class?

Recommended Posts

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!

Share this post


Link to post
Share on other sites

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!

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.