Jump to content

Regarding State class


hyude
 Share

Recommended Posts

Hello.

 

I am trying to learn how game state/switch state workds in phaser.

I use a boilerplate from https://github.com/EnclaveGames/Cyber-Orb.

 

I tested it in browser and it works.

 

When I read the source code, something intrigues me.

All of Game State only declared as function(game) with given preload() and create() method.

The Phaser Docs also said you can add a simple function object as game state (it doesn't have to be a Phaser.State object).

 

I then tried to call console.debug(this) during state preload(), and the displayed object is a completed state object with add, load, etc.

 

My question : Does Phaser somehow assign all of it during initiialization?

How can the simple function object now have all object available for it?

 

I tried searching in StateManager class and Game class source code and found none of it.

 

 

Where does exactly Phaser did that, and how did it achieve that?

Thanks

 

Link to comment
Share on other sites

All of Game State only declared as function(game) with given preload() and create() method.

The Phaser Docs also said you can add a simple function object as game state (it doesn't have to be a Phaser.State object).

 

I then tried to call console.debug(this) during state preload(), and the displayed object is a completed state object with add, load, etc.

 

My question : Does Phaser somehow assign all of it during initiialization?

How can the simple function object now have all object available for it?

 

When you pass a simple object with those methods to Phaser it calls

this.state = new Phaser.StateManager(this, state);

https://github.com/photonstorm/phaser/blob/26fe06e00c7c85bbe76ee8827a0cbf48dbf5f93d/src/core/Game.js#L313

 

Phaser internally creates a new StateManager from the `state` that is passed into the `Game` constructor.

Phaser.StateManager can accept either a State or Object

Link to comment
Share on other sites

Edit :

 

Wait, but doesnt that code means Phaser initialize game.state object to referenced at State Manager with given pendingState?

 

My question is why the basic function object which get added by game.state.add(obj) somehow get all their properties?

Where does this happen?

Link to comment
Share on other sites

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...