# Class: Button

## Phaser. Button

Create a new `Button` object. A Button is a special type of Sprite that is set-up to handle Pointer events automatically. The four states a Button responds to are:

- 'Over' - when the Pointer moves over the Button. This is also commonly known as 'hover'.
- 'Out' - when the Pointer that was previously over the Button moves out of it.
- 'Down' - when the Pointer is pressed down on the Button. I.e. touched on a touch enabled device or clicked with the mouse.
- 'Up' - when the Pointer that was pressed down on the Button is released again.

You can set a unique texture frame and Sound for any of these states.

#### new Button(game, x, y, key, callback, callbackContext, overFrame, outFrame, downFrame, upFrame)

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `game` | Phaser.Game |  |  | Current game instance.
  `x` | number | <optional> | 0 | X position of the Button.
  `y` | number | <optional> | 0 | Y position of the Button.
  `key` | string | <optional> |  | The image key as defined in the Game.Cache to use as the texture for this Button.
  `callback` | function | <optional> |  | The function to call when this Button is pressed.
  `callbackContext` | object | <optional> |  | The context in which the callback will be called (usually 'this').
  `overFrame` | string | number | <optional> |  | This is the frame or frameName that will be set when this button is in an over state. Give either a number to use a frame ID or a string for a frame name.
  `outFrame` | string | number | <optional> |  | This is the frame or frameName that will be set when this button is in an out state. Give either a number to use a frame ID or a string for a frame name.
  `downFrame` | string | number | <optional> |  | This is the frame or frameName that will be set when this button is in a down state. Give either a number to use a frame ID or a string for a frame name.
  `upFrame` | string | number | <optional> |  | This is the frame or frameName that will be set when this button is in an up state. Give either a number to use a frame ID or a string for a frame name.

  Source:
    - gameobjects/Button.js, line 33

### Extends

- Phaser.Image

### Members

#### angle

  Indicates the rotation of the Image, in degrees, from its original orientation. Values from 0 to 180 represent clockwise rotation; values from 0 to -180 represent counterclockwise rotation. Values outside this range are added to or subtracted from 360 to obtain a value within the range. For example, the statement player.angle = 450 is the same as player.angle = 90. If you wish to work in radians instead of degrees use the property Image.rotation instead. Working in radians is also a little faster as it doesn't have to convert the angle.

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `angle` | number | The angle of this Image in degrees.

  Inherited From:
    - Phaser.Image#angle
  Source:
    - gameobjects/Image.js, line 493

#### autoCull

  Should this Image be automatically culled if out of range of the camera? A culled sprite has its renderable property set to 'false'. Be advised this is quite an expensive operation, as it has to calculate the bounds of the object every frame, so only enable it if you really need it.

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `autoCull` | boolean | A flag indicating if the Image should be automatically camera culled or not.

  Inherited From:
    - Phaser.Image#autoCull
  Default Value:
    - false
  Source:
    - gameobjects/Image.js, line 96

#### cameraOffset

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `cameraOffset` | Phaser.Point | If this object is fixedToCamera then this stores the x/y offset that its drawn at, from the top-left of the camera view.

  Inherited From:
    - Phaser.Image#cameraOffset
  Source:
    - gameobjects/Image.js, line 106

#### <readonly> deltaX

  Returns the delta x value. The difference between world.x now and in the previous step.

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `deltaX` | number | The delta value. Positive if the motion was to the right, negative if to the left.

  Inherited From:
    - Phaser.Image#deltaX
  Source:
    - gameobjects/Image.js, line 517

#### <readonly> deltaY

  Returns the delta y value. The difference between world.y now and in the previous step.

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `deltaY` | number | The delta value. Positive if the motion was downwards, negative if upwards.

  Inherited From:
    - Phaser.Image#deltaY
  Source:
    - gameobjects/Image.js, line 534

#### <readonly> deltaZ

  Returns the delta z value. The difference between rotation now and in the previous step.

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `deltaZ` | number | The delta value.

  Inherited From:
    - Phaser.Image#deltaZ
  Source:
    - gameobjects/Image.js, line 551

#### destroyPhase

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `destroyPhase` | boolean | True if this object is currently being destroyed.

  Inherited From:
    - Phaser.Image#destroyPhase
  Source:
    - gameobjects/Image.js, line 780

#### events

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `events` | Phaser.Events | The Events you can subscribe to that are dispatched when certain things happen on this Image or its components.

  Inherited From:
    - Phaser.Image#events
  Source:
    - gameobjects/Image.js, line 58

#### exists

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `exists` | boolean | If exists = false then the Image isn't updated by the core game loop.

  Inherited From:
    - Phaser.Image#exists
  Default Value:
    - true
  Source:
    - gameobjects/Image.js, line 36

#### fixedToCamera

  An Image that is fixed to the camera uses its x/y coordinates as offsets from the top left of the camera. These are stored in Image.cameraOffset. Note that the cameraOffset values are in addition to any parent in the display list. So if this Image was in a Group that has x: 200, then this will be added to the cameraOffset.x

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `fixedToCamera` | boolean | Set to true to fix this Image to the Camera at its current world coordinates.

  Inherited From:
    - Phaser.Image#fixedToCamera
  Source:
    - gameobjects/Image.js, line 715

#### forceOut

  When the Button is touched / clicked and then released you can force it to enter a state of "out" instead of "up".

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `forceOut` | boolean |

  Default Value:
    - false
  Source:
    - gameobjects/Button.js, line 188

#### frame

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `frame` | number | Gets or sets the current frame index and updates the Texture for display.

  Inherited From:
    - Phaser.Image#frame
  Source:
    - gameobjects/Image.js, line 602

#### frameName

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `frameName` | string | Gets or sets the current frame by name and updates the Texture for display.

  Inherited From:
    - Phaser.Image#frameName
  Source:
    - gameobjects/Image.js, line 631

#### freezeFrames

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `freezeFrames` | boolean | When true the Button will cease to change texture frame on all events (over, out, up, down).

  Source:
    - gameobjects/Button.js, line 181

#### game

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `game` | Phaser.Game | A reference to the currently running Game.

  Inherited From:
    - Phaser.Image#game
  Source:
    - gameobjects/Image.js, line 30

#### <readonly> inCamera

  Checks if the Image bounds are within the game camera, otherwise false if fully outside of it.

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `inCamera` | boolean | True if the Image bounds is within the game camera, even if only partially. Otherwise false if fully outside of it.

  Inherited From:
    - Phaser.Image#inCamera
  Source:
    - gameobjects/Image.js, line 585

#### input

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `input` | Phaser.InputHandler | null | The Input Handler for this object. Needs to be enabled with image.inputEnabled = true before you can use it.

  Inherited From:
    - Phaser.Image#input
  Source:
    - gameobjects/Image.js, line 101

#### inputEnabled

  By default an Image won't process any input events at all. By setting inputEnabled to true the Phaser.InputHandler is activated for this object and it will then start to process click/touch events and more.

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `inputEnabled` | boolean | Set to true to allow this object to receive input events.

  Inherited From:
    - Phaser.Image#inputEnabled
  Source:
    - gameobjects/Image.js, line 675

#### <readonly> inWorld

  Checks if the Image bounds are within the game world, otherwise false if fully outside of it.

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `inWorld` | boolean | True if the Image bounds is within the game world, even if only partially. Otherwise false if fully outside of it.

  Inherited From:
    - Phaser.Image#inWorld
  Source:
    - gameobjects/Image.js, line 568

#### key

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `key` | string | Phaser.RenderTexture | Phaser.BitmapData | PIXI.Texture | This is the image or texture used by the Image during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture, BitmapData or PIXI.Texture.

  Inherited From:
    - Phaser.Image#key
  Source:
    - gameobjects/Image.js, line 63

#### name

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `name` | string | The user defined name given to this Image.

  Inherited From:
    - Phaser.Image#name
  Source:
    - gameobjects/Image.js, line 42

#### onDownSound

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `onDownSound` | Phaser.Sound | The Sound to be played when this Buttons Down state is activated.

  Default Value:
    - null
  Source:
    - gameobjects/Button.js, line 126

#### onDownSoundMarker

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `onDownSoundMarker` | string | The Sound Marker used in conjunction with the onDownSound.

  Source:
    - gameobjects/Button.js, line 150

#### onInputDown

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `onInputDown` | Phaser.Signal | The Signal (or event) dispatched when this Button is in an Down state.

  Source:
    - gameobjects/Button.js, line 171

#### onInputOut

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `onInputOut` | Phaser.Signal | The Signal (or event) dispatched when this Button is in an Out state.

  Source:
    - gameobjects/Button.js, line 166

#### onInputOver

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `onInputOver` | Phaser.Signal | The Signal (or event) dispatched when this Button is in an Over state.

  Source:
    - gameobjects/Button.js, line 161

#### onInputUp

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `onInputUp` | Phaser.Signal | The Signal (or event) dispatched when this Button is in an Up state.

  Source:
    - gameobjects/Button.js, line 176

#### onOutSound

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `onOutSound` | Phaser.Sound | The Sound to be played when this Buttons Out state is activated.

  Default Value:
    - null
  Source:
    - gameobjects/Button.js, line 120

#### onOutSoundMarker

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `onOutSoundMarker` | string | The Sound Marker used in conjunction with the onOutSound.

  Source:
    - gameobjects/Button.js, line 144

#### onOverMouseOnly

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `onOverMouseOnly` | boolean | If true then onOver events (such as onOverSound) will only be triggered if the Pointer object causing them was the Mouse Pointer.

  Default Value:
    - false
  Source:
    - gameobjects/Button.js, line 108

#### onOverSound

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `onOverSound` | Phaser.Sound | The Sound to be played when this Buttons Over state is activated.

  Default Value:
    - null
  Source:
    - gameobjects/Button.js, line 114

#### onOverSoundMarker

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `onOverSoundMarker` | string | The Sound Marker used in conjunction with the onOverSound.

  Source:
    - gameobjects/Button.js, line 138

#### onUpSound

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `onUpSound` | Phaser.Sound | The Sound to be played when this Buttons Up state is activated.

  Default Value:
    - null
  Source:
    - gameobjects/Button.js, line 132

#### onUpSoundMarker

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `onUpSoundMarker` | string | The Sound Marker used in conjunction with the onUpSound.

  Source:
    - gameobjects/Button.js, line 156

#### <readonly> renderOrderID

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `renderOrderID` | number | The render order ID, reset every frame.

  Inherited From:
    - Phaser.Image#renderOrderID
  Source:
    - gameobjects/Image.js, line 660

#### smoothed

  Enable or disable texture smoothing for this Image. Only works for bitmap/image textures. Smoothing is enabled by default.

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `smoothed` | boolean | Set to true to smooth the texture of this Image, or false to disable smoothing (great for pixel art)

  Inherited From:
    - Phaser.Image#smoothed
  Source:
    - gameobjects/Image.js, line 746

#### type

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `type` | number | The Phaser Object Type.

  Source:
    - gameobjects/Button.js, line 46

#### world

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `world` | Phaser.Point | The world coordinates of this Image. This differs from the x/y coordinates which are relative to the Images container.

  Inherited From:
    - Phaser.Image#world
  Source:
    - gameobjects/Image.js, line 86

#### z

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `z` | number | The z-depth value of this object within its Group (remember the World is a Group as well). No two objects in a Group can have the same z value.

  Inherited From:
    - Phaser.Image#z
  Source:
    - gameobjects/Image.js, line 53

### Methods

#### bringToTop() → {Phaser.Image}

  Brings the Image to the top of the display list it is a child of. Images that are members of a Phaser.Group are only bought to the top of that Group, not the entire display list.

  Inherited From:
    - Phaser.Image#bringToTop
  Source:
    - gameobjects/Image.js, line 474

  ##### Returns:

  This instance.

  Type
    Phaser.Image

#### clearFrames()

  Clears all of the frames set on this Button.

  Source:
    - gameobjects/Button.js, line 212

#### crop(rect)

  Crop allows you to crop the texture used to display this Image. Cropping takes place from the top-left of the Image and can be modified in real-time by providing an updated rectangle object. The rectangle object given to this method can be either a Phaser.Rectangle or any object so long as it has public x, y, width and height properties. Please note that the rectangle object given is not duplicated by this method, but rather the Image uses a reference to the rectangle. Keep this in mind if assigning a rectangle in a for-loop, or when cleaning up for garbage collection.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `rect` | Phaser.Rectangle | object | The Rectangle to crop the Image to. Pass null or no parameters to clear a previously set crop rectangle.

  Inherited From:
    - Phaser.Image#crop
  Source:
    - gameobjects/Image.js, line 285

#### destroy(destroyChildren)

  Destroys the Image. This removes it from its parent group, destroys the input, event and animation handlers if present and nulls its reference to game, freeing it up for garbage collection.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `destroyChildren` | boolean | <optional> | true | Should every child of this object have its destroy method called?

  Inherited From:
    - Phaser.Image#destroy
  Source:
    - gameobjects/Image.js, line 384

#### kill() → {Phaser.Image}

  Kills a Image. A killed Image has its alive, exists and visible properties all set to false. It will dispatch the onKilled event, you can listen to Image.events.onKilled for the signal. Note that killing a Image is a way for you to quickly recycle it in a Image pool, it doesn't free it up from memory. If you don't need this Image any more you should call Image.destroy instead.

  Inherited From:
    - Phaser.Image#kill
  Source:
    - gameobjects/Image.js, line 359

  ##### Returns:

  This instance.

  Type
    Phaser.Image

#### loadTexture(key, frame)

  Changes the Texture the Image is using entirely. The old texture is removed and the new one is referenced or fetched from the Cache. This causes a WebGL texture update, so use sparingly or in low-intensity portions of your game.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `key` | string | Phaser.RenderTexture | Phaser.BitmapData | PIXI.Texture | This is the image or texture used by the Image during rendering. It can be a string which is a reference to the Cache entry, or an instance of a RenderTexture, BitmapData or PIXI.Texture.
  `frame` | string | number | If this Image is using part of a sprite sheet or texture atlas you can specify the exact frame to use by giving a string or numeric index.

  Inherited From:
    - Phaser.Image#loadTexture
  Source:
    - gameobjects/Image.js, line 208

#### <protected> onInputDownHandler(sprite, pointer)

  Internal function that handles input events.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `sprite` | Phaser.Button | The Button that the event occured on.
  `pointer` | Phaser.Pointer | The Pointer that activated the Button.

  Source:
    - gameobjects/Button.js, line 514

#### <protected> onInputOutHandler(sprite, pointer)

  Internal function that handles input events.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `sprite` | Phaser.Button | The Button that the event occured on.
  `pointer` | Phaser.Pointer | The Pointer that activated the Button.

  Source:
    - gameobjects/Button.js, line 488

#### <protected> onInputOverHandler(sprite, pointer)

  Internal function that handles input events.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `sprite` | Phaser.Button | The Button that the event occured on.
  `pointer` | Phaser.Pointer | The Pointer that activated the Button.

  Source:
    - gameobjects/Button.js, line 456

#### <protected> onInputUpHandler(sprite, pointer)

  Internal function that handles input events.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `sprite` | Phaser.Button | The Button that the event occured on.
  `pointer` | Phaser.Pointer | The Pointer that activated the Button.

  Source:
    - gameobjects/Button.js, line 540

#### postUpdate()

  Internal function called by the World postUpdate cycle.

  Inherited From:
    - Phaser.Image#postUpdate
  Source:
    - gameobjects/Image.js, line 180

#### preUpdate()

  Automatically called by World.preUpdate.

  Inherited From:
    - Phaser.Image#preUpdate
  Source:
    - gameobjects/Image.js, line 129

#### reset(x, y) → {Phaser.Image}

  Resets the Image. This places the Image at the given x/y world coordinates and then sets alive, exists, visible and renderable all to true.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `x` | number | The x coordinate (in world space) to position the Image at.
  `y` | number | The y coordinate (in world space) to position the Image at.

  Inherited From:
    - Phaser.Image#reset
  Source:
    - gameobjects/Image.js, line 451

  ##### Returns:

  This instance.

  Type
    Phaser.Image

#### revive() → {Phaser.Image}

  Brings a 'dead' Image back to life, optionally giving it the health value specified. A resurrected Image has its alive, exists and visible properties all set to true. It will dispatch the onRevived event, you can listen to Image.events.onRevived for the signal.

  Inherited From:
    - Phaser.Image#revive
  Source:
    - gameobjects/Image.js, line 335

  ##### Returns:

  This instance.

  Type
    Phaser.Image

#### setDownSound(sound, marker)

  The Sound to be played when a Pointer presses down on this Button.

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `sound` | Phaser.Sound |  | The Sound that will be played.
  `marker` | string | <optional> | A Sound Marker that will be used in the playback.

  Source:
    - gameobjects/Button.js, line 408

#### setFrames(overFrame, outFrame, downFrame, upFrame)

  Used to manually set the frames that will be used for the different states of the Button.

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `overFrame` | string | number | <optional> | This is the frame or frameName that will be set when this button is in an over state. Give either a number to use a frame ID or a string for a frame name.
  `outFrame` | string | number | <optional> | This is the frame or frameName that will be set when this button is in an out state. Give either a number to use a frame ID or a string for a frame name.
  `downFrame` | string | number | <optional> | This is the frame or frameName that will be set when this button is in a down state. Give either a number to use a frame ID or a string for a frame name.
  `upFrame` | string | number | <optional> | This is the frame or frameName that will be set when this button is in an up state. Give either a number to use a frame ID or a string for a frame name.

  Source:
    - gameobjects/Button.js, line 233

#### setOutSound(sound, marker)

  The Sound to be played when a Pointer moves out of this Button.

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `sound` | Phaser.Sound |  | The Sound that will be played.
  `marker` | string | <optional> | A Sound Marker that will be used in the playback.

  Source:
    - gameobjects/Button.js, line 384

#### setOverSound(sound, marker)

  The Sound to be played when a Pointer moves over this Button.

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `sound` | Phaser.Sound |  | The Sound that will be played.
  `marker` | string | <optional> | A Sound Marker that will be used in the playback.

  Source:
    - gameobjects/Button.js, line 360

#### setSounds(overSound, overMarker, downSound, downMarker, outSound, outMarker, upSound, upMarker)

  Sets the sounds to be played whenever this Button is interacted with. Sounds can be either full Sound objects, or markers pointing to a section of a Sound object. The most common forms of sounds are 'hover' effects and 'click' effects, which is why the order of the parameters is overSound then downSound. Call this function with no parameters at all to reset all sounds on this Button.

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `overSound` | Phaser.Sound | <optional> | Over Button Sound.
  `overMarker` | string | <optional> | Over Button Sound Marker.
  `downSound` | Phaser.Sound | <optional> | Down Button Sound.
  `downMarker` | string | <optional> | Down Button Sound Marker.
  `outSound` | Phaser.Sound | <optional> | Out Button Sound.
  `outMarker` | string | <optional> | Out Button Sound Marker.
  `upSound` | Phaser.Sound | <optional> | Up Button Sound.
  `upMarker` | string | <optional> | Up Button Sound Marker.

  Source:
    - gameobjects/Button.js, line 336

#### <protected> setState(newState)

  Internal function that handles Button state changes.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `newState` | number | The new State of the Button.

  Source:
    - gameobjects/Button.js, line 591

#### setUpSound(sound, marker)

  The Sound to be played when a Pointer has pressed down and is released from this Button.

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `sound` | Phaser.Sound |  | The Sound that will be played.
  `marker` | string | <optional> | A Sound Marker that will be used in the playback.

  Source:
    - gameobjects/Button.js, line 432

#### update()

  Override and use this function in your own custom objects to handle any update requirements you may have.

  Inherited From:
    - Phaser.Image#update
  Source:
    - gameobjects/Image.js, line 170