# Phaser: Mouse input

> Learn how to handle mouse input in Phaser by making a GameObject interactive with setInteractive, then listening for events like pointerup with on.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2021-04-19 | Topics: [Phaser](https://flaviocopes.com/tags/phaser/) | Canonical: https://flaviocopes.com/phaser-mouse-input/

> This post is part of a Phaser series. [Click here](https://flaviocopes.com/phaser-setup/) to see the first post of the series.

Any GameObject can be made interactive.

To do so, we must call the `setInteractive()` method on it:

```js
text = this.add.text(100, 100, 'test')
text.setInteractive()
```

Once a GameObject is interactive, it can listen for events.

This is done using the `on()` method. We pass an event name, and a callback function that's executed when the event occurs:

```js
text.on('pointerup', function () {})
```

`pointerup` is just one of the **mouse events** we can listen for. We also have:

- `pointerdown`
- `pointerdownoutside`
- `pointerup`
- `pointerupoutside`
- `pointermove`
- `pointerover`
- `pointerout`
- `wheel`

This is just the beginning. We have many advanced mouse (and touch events) controls at our disposal.

`gameobjectdown` is a more general event that is fired when any interactive element is clicked, and it's not fired on an object, but on `this.input`:

```js
this.input.on('gameobjectdown', () => {})
```
