Phaser Class: StateManager

## Phaser. StateManager

#### new StateManager(game, pendingState)

  The State Manager is responsible for loading, setting up and switching game states.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `game` | Phaser.Game |  |  | A reference to the currently running game.
  `pendingState` | Phaser.State | Object | <optional> | null | A State object to seed the manager with.

  Source - core/StateManager.js, line 17

### Members

#### <readonly> created :boolean

  True if the current state has had its `create` method run (if it has one, if not this is true by default).

  Source - core/StateManager.js, line 774

#### current :string

  The current active State object.

  Source - core/StateManager.js, line 68

#### game :Phaser.Game

  A reference to the currently running game.

  Source - core/StateManager.js, line 22

#### onCreateCallback :function

  This is called when the state preload has finished and creation begins.

  Source - core/StateManager.js, line 100

#### onInitCallback :function

  This is called when the state is set as the active state.

  Source - core/StateManager.js, line 88

#### onLoadRenderCallback :function

  This is called when the State is rendered during the preload phase.

  Source - core/StateManager.js, line 136

#### onLoadUpdateCallback :function

  This is called when the State is updated during the preload phase.

  Source - core/StateManager.js, line 130

#### onPausedCallback :function

  This is called when the game is paused.

  Source - core/StateManager.js, line 142

#### onPauseUpdateCallback :function

  This is called every frame while the game is paused.

  Source - core/StateManager.js, line 154

#### onPreloadCallback :function

  This is called when the state starts to load assets.

  Source - core/StateManager.js, line 94

#### onPreRenderCallback :function

  This is called before the state is rendered and before the stage is cleared but after all game objects have had their final properties adjusted.

  Source - core/StateManager.js, line 124

#### onRenderCallback :function

  This is called post-render. It doesn't happen during preload (see onLoadRenderCallback).

  Source - core/StateManager.js, line 112

#### onResizeCallback :function

  This is called if ScaleManager.scalemode is RESIZE and a resize event occurs. It's passed the new width and height.

  Source - core/StateManager.js, line 118

#### onResumedCallback :function

  This is called when the game is resumed from a paused state.

  Source - core/StateManager.js, line 148

#### onShutDownCallback :function

  This is called when the state is shut down (i.e. swapped to another state).

  Source - core/StateManager.js, line 160

#### onStateChange :Phaser.Signal

  onStateChange is a Phaser.Signal that is dispatched whenever the game changes state.

  It is dispatched only when the new state is started, which isn't usually at the same time as StateManager.start
  is called because state swapping is done in sync with the game loop. It is dispatched before any of the new states
  methods (such as preload and create) are called, and after the previous states shutdown method has been run.

  The callback you specify is sent two parameters: the string based key of the new state,
  and the second parameter is the string based key of the old / previous state.

  Source - core/StateManager.js, line 82

#### onUpdateCallback :function

  This is called when the state is updated, every game loop. It doesn't happen during preload (@see onLoadUpdateCallback).

  Source - core/StateManager.js, line 106

#### states :object

  The object containing Phaser.States.

  Source - core/StateManager.js, line 27

### Methods

#### add(key, state, autoStart)

  Adds a new State into the StateManager. You must give each State a unique key by which you'll identify it.
  The State can be either a Phaser.State object (or an object that extends it), a plain JavaScript object or a function.
  If a function is given a new state object will be created by calling it.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `key` | string |  |  | A unique key you use to reference this state, i.e. "MainMenu", "Level1".
  `state` | Phaser.State | object | function |  |  | The state you want to switch to.
  `autoStart` | boolean | <optional> | false | If true the State will be started immediately after adding it.

  Source - core/StateManager.js, line 183

#### checkState(key) → {boolean}

  Checks if a given phaser state is valid. A State is considered valid if it has at least one of the core functions: preload, create, update or render.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `key` | string | The key of the state you want to check.

  ##### Returns:

  boolean -

  true if the State has the required functions, otherwise false.

  Source - core/StateManager.js, line 423

#### clearCurrentState()

  This method clears the current State, calling its shutdown callback. The process also removes any active tweens,
  resets the camera, resets input, clears physics, removes timers and if set clears the world and cache too.

  Source - core/StateManager.js, line 378

#### destroy()

  Removes all StateManager callback references to the State object, nulls the game reference and clears the States object.
  You don't recover from this without rebuilding the Phaser instance again.

  Source - core/StateManager.js, line 736

#### getCurrentState() → {Phaser.State}

  Gets the current State.

  ##### Returns:

  Phaser.State -
  Source - core/StateManager.js, line 569

#### <internal> link(key)

  Links game properties to the State given by the key.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `key` | string | State key.

  Internal:
    - This member is internal (protected) and may be modified or removed in the future.
  Source - core/StateManager.js, line 452

#### <internal> loadComplete()

  Internal:
    - This member is internal (protected) and may be modified or removed in the future.
  Source - core/StateManager.js, line 580

#### <internal> pause()

  Internal:
    - This member is internal (protected) and may be modified or removed in the future.
  Source - core/StateManager.js, line 604

#### <internal> pauseUpdate()

  Internal:
    - This member is internal (protected) and may be modified or removed in the future.
  Source - core/StateManager.js, line 653

#### <internal> preRender(elapsedTime)

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `elapsedTime` | number | The time elapsed since the last update.

  Internal:
    - This member is internal (protected) and may be modified or removed in the future.
  Source - core/StateManager.js, line 676

#### preUpdate()

  preUpdate is called right at the start of the game loop. It is responsible for changing to a new state that was requested previously.

  Source - core/StateManager.js, line 324

#### remove(key)

  Delete the given state.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `key` | string | A unique key you use to reference this state, i.e. "MainMenu", "Level1".

  Source - core/StateManager.js, line 231

#### <internal> render()

  Internal:
    - This member is internal (protected) and may be modified or removed in the future.
  Source - core/StateManager.js, line 703

#### <internal> resize()

  Internal:
    - This member is internal (protected) and may be modified or removed in the future.
  Source - core/StateManager.js, line 690

#### restart(clearWorld, clearCache, parameter)

  Restarts the current State. State.shutDown will be called (if it exists) before the State is restarted.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `clearWorld` | boolean | <optional> | true | Clear everything in the world? This clears the World display list fully (but not the Stage, so if you've added your own objects to the Stage they will need managing directly)
  `clearCache` | boolean | <optional> | false | Clear the Game.Cache? This purges out all loaded assets. The default is false and you must have clearWorld=true if you want to clearCache as well.
  `parameter` | * | <repeatable> |  | Additional parameters that will be passed to the State.init function if it has one.

  Source - core/StateManager.js, line 291

#### <internal> resume()

  Internal:
    - This member is internal (protected) and may be modified or removed in the future.
  Source - core/StateManager.js, line 617

#### start(key, clearWorld, clearCache, parameter)

  Start the given State. If a State is already running then State.shutDown will be called (if it exists) before switching to the new State.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `key` | string |  |  | The key of the state you want to start.
  `clearWorld` | boolean | <optional> | true | Clear everything in the world? This clears the World display list fully (but not the Stage, so if you've added your own objects to the Stage they will need managing directly)
  `clearCache` | boolean | <optional> | false | Clear the Game.Cache? This purges out all loaded assets. The default is false and you must have clearWorld=true if you want to clearCache as well.
  `parameter` | * | <repeatable> |  | Additional parameters that will be passed to the State.init function (if it has one).

  Source - core/StateManager.js, line 262

#### <internal> unlink(key)

  Nulls all State level Phaser properties, including a reference to Game.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `key` | string | State key.

  Internal:
    - This member is internal (protected) and may be modified or removed in the future.
  Source - core/StateManager.js, line 483

#### <internal> update()

  Internal:
    - This member is internal (protected) and may be modified or removed in the future.
  Source - core/StateManager.js, line 630