# Using mouse in p5 is a bit complicated

**URL:** <https://discourse.processing.org/t/using-mouse-in-p5-is-a-bit-complicated/21990>\
**Category:** Coding Questions\
**Created:** [June 19, 2020, 8:55am UTC](https://discourse.processing.org/t/using-mouse-in-p5-is-a-bit-complicated/21990 "2020-06-19T08:55:04Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![ARNAV\_A\_GUPTA](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/arnav_a_gupta/32/9660_2.png) [@ARNAV\_A\_GUPTA](https://discourse.processing.org/u/ARNAV_A_GUPTA)\
**Post date:** [June 19, 2020, 8:55am UTC](https://discourse.processing.org/t/using-mouse-in-p5-is-a-bit-complicated/21990/1 "2020-06-19T08:55:04Z")

</div>

tell me of anything that I can use that is executed in only one frame when mouse is pressed within the if condition…

---

<div class="post-metadata">

**Author:** ![ARNAV\_A\_GUPTA](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/arnav_a_gupta/32/9660_2.png) [@ARNAV\_A\_GUPTA](https://discourse.processing.org/u/ARNAV_A_GUPTA)\
**Post date:** [June 19, 2020, 10:32am UTC](https://discourse.processing.org/t/using-mouse-in-p5-is-a-bit-complicated/21990/2 "2020-06-19T10:32:55Z")

</div>

plz I wan it fast… Just like mousePressed(); but i want to use in an if condition

---

<div class="post-metadata">

**Author:** ![SomeOne](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/someone/32/8639_2.png) [@SomeOne](https://discourse.processing.org/u/SomeOne)\
**Post date:** [June 19, 2020, 2:11pm UTC](https://discourse.processing.org/t/using-mouse-in-p5-is-a-bit-complicated/21990/3 "2020-06-19T14:11:28Z")

</div>

[https://p5js.org/reference/#/p5/mouseIsPressed](https://p5js.org/reference/#/p5/mouseIsPressed)

---

<div class="post-metadata">

**Author:** ![ARNAV\_A\_GUPTA](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/arnav_a_gupta/32/9660_2.png) [@ARNAV\_A\_GUPTA](https://discourse.processing.org/u/ARNAV_A_GUPTA)\
**Post date:** [June 19, 2020, 7:08pm UTC](https://discourse.processing.org/t/using-mouse-in-p5-is-a-bit-complicated/21990/4 "2020-06-19T19:08:39Z")

</div>

@SomeOne that is the rpoblem, mouseIsPressed is true till you press…

---

<div class="post-metadata">

**Author:** ![slow\_izzm](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/slow_izzm/32/5637_2.png) [@slow\_izzm](https://discourse.processing.org/u/slow_izzm)\
**Post date:** [June 19, 2020, 9:40pm UTC](https://discourse.processing.org/t/using-mouse-in-p5-is-a-bit-complicated/21990/5 "2020-06-19T21:40:52Z")

</div>

> [@ARNAV\_A\_GUPTA](#):
>
> mouseIsPressed is true till you press…

huh, did you read the description?

### Description

The boolean system variable mouseIsPressed is true if the mouse is pressed and false if not.

---

<div class="post-metadata">

**Author:** ![ARNAV\_A\_GUPTA](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/arnav_a_gupta/32/9660_2.png) [@ARNAV\_A\_GUPTA](https://discourse.processing.org/u/ARNAV_A_GUPTA)\
**Post date:** [June 20, 2020, 6:32am UTC](https://discourse.processing.org/t/using-mouse-in-p5-is-a-bit-complicated/21990/6 "2020-06-20T06:32:32Z")

</div>

I know that… I am just saying, if I write something like this

```auto
if(mouseIsPressed){
playState ++;
}

```

It should only get one above, I’ll use mouseIsPressed and it’ll go I don’t know how many places above

---

<div class="post-metadata">

**Author:** ![Sven](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/sven/32/8293_2.png) [@Sven](https://discourse.processing.org/u/Sven)\
**Post date:** [June 20, 2020, 7:10am UTC](https://discourse.processing.org/t/using-mouse-in-p5-is-a-bit-complicated/21990/7 "2020-06-20T07:10:16Z")

</div>

Maybe you want this instead?

```auto
function mouseClicked() {
  playState++;
}

```

---

<div class="post-metadata">

**Author:** ![slow\_izzm](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/slow_izzm/32/5637_2.png) [@slow\_izzm](https://discourse.processing.org/u/slow_izzm)\
**Post date:** [June 20, 2020, 7:23am UTC](https://discourse.processing.org/t/using-mouse-in-p5-is-a-bit-complicated/21990/8 "2020-06-20T07:23:39Z")

</div>

> [@ARNAV\_A\_GUPTA](#):
>
> It should only get one above

I see … yeah you should use one of the event listeners, `mousePressed()` or `mouseClicked()`. `mouseIsPressed()` is a boolean function that you are probably calling in `draw()` so it’s getting fired every frame until you release the mouse. The time it takes to do a natural mouse click takes several frames …

---

<div class="post-metadata">

**Author:** ![ARNAV\_A\_GUPTA](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/arnav_a_gupta/32/9660_2.png) [@ARNAV\_A\_GUPTA](https://discourse.processing.org/u/ARNAV_A_GUPTA)\
**Post date:** [June 20, 2020, 7:34am UTC](https://discourse.processing.org/t/using-mouse-in-p5-is-a-bit-complicated/21990/9 "2020-06-20T07:34:48Z")

</div>

the way I’ve done it, i’ve put a delay between two mouse-click conditions. Its quite working thank you anyways

---

<div class="post-metadata">

**Author:** ![ARNAV\_A\_GUPTA](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/arnav_a_gupta/32/9660_2.png) [@ARNAV\_A\_GUPTA](https://discourse.processing.org/u/ARNAV_A_GUPTA)\
**Post date:** [June 20, 2020, 7:36am UTC](https://discourse.processing.org/t/using-mouse-in-p5-is-a-bit-complicated/21990/10 "2020-06-20T07:36:25Z")

</div>

@slow_izzm and plz help me with it, i’m using buffers for drawing an image and using it for my sprite. it’s quite done, but at last I want to change my background. when I do it, the images are gone. Is this a bug? If yes, any alternative to it??

---

<div class="post-metadata">

**Author:** ![SomeOne](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/someone/32/8639_2.png) [@SomeOne](https://discourse.processing.org/u/SomeOne)\
**Post date:** [June 20, 2020, 7:59am UTC](https://discourse.processing.org/t/using-mouse-in-p5-is-a-bit-complicated/21990/11 "2020-06-20T07:59:06Z")

</div>

It’s not a bug. Most common pattern in processing is

```auto
def draw() {
  background(0);
  //draw things again and again

```

Because erasing or removing a graphical element is difficult or impossible we use repeatedly called draw()-function and start by background() to clear canvas and draw all elements again. Because draw is called 60 times a second you can create elaborate animations by changing what is drawn by each round of draw() calls.

---

<div class="post-metadata">

**Author:** ![ARNAV\_A\_GUPTA](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/arnav_a_gupta/32/9660_2.png) [@ARNAV\_A\_GUPTA](https://discourse.processing.org/u/ARNAV_A_GUPTA)\
**Post date:** [June 20, 2020, 8:06am UTC](https://discourse.processing.org/t/using-mouse-in-p5-is-a-bit-complicated/21990/12 "2020-06-20T08:06:29Z")

</div>

but i used buffers, background should not interfere in it…

---

<div class="post-metadata">

**Author:** ![SomeOne](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/someone/32/8639_2.png) [@SomeOne](https://discourse.processing.org/u/SomeOne)\
**Post date:** [June 20, 2020, 8:19am UTC](https://discourse.processing.org/t/using-mouse-in-p5-is-a-bit-complicated/21990/13 "2020-06-20T08:19:14Z")

</div>

background clears canvas, the visible drawing area. And in the same manner it can clear your buffers

```auto
buffer.background(0);

```

would set buffer to black and clear everything on it. You can use the same draw() cycle with buffers too

---

<div class="post-metadata">

**Author:** ![ARNAV\_A\_GUPTA](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/arnav_a_gupta/32/9660_2.png) [@ARNAV\_A\_GUPTA](https://discourse.processing.org/u/ARNAV_A_GUPTA)\
**Post date:** [June 20, 2020, 8:30am UTC](https://discourse.processing.org/t/using-mouse-in-p5-is-a-bit-complicated/21990/14 "2020-06-20T08:30:14Z")

</div>

that is something I don’t want to do, it’s happening on its own

---

<div class="post-metadata">

**Author:** ![SomeOne](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/someone/32/8639_2.png) [@SomeOne](https://discourse.processing.org/u/SomeOne)\
**Post date:** [June 20, 2020, 2:50pm UTC](https://discourse.processing.org/t/using-mouse-in-p5-is-a-bit-complicated/21990/15 "2020-06-20T14:50:18Z")

</div>

What do you mean?? Background happens on it’s own or draw() cycle goes on on it’s own. They are both built that way. You can prevent draw() from happening with noLoop()-function, but background() clears canvas and that’s it.

---

<div class="post-metadata">

**Author:** ![slow\_izzm](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/slow_izzm/32/5637_2.png) [@slow\_izzm](https://discourse.processing.org/u/slow_izzm)\
**Post date:** [June 20, 2020, 3:22pm UTC](https://discourse.processing.org/t/using-mouse-in-p5-is-a-bit-complicated/21990/16 "2020-06-20T15:22:20Z")

</div>

> [@ARNAV\_A\_GUPTA](#):
>
> and plz help me with it

Can you share your code so we can take a look?

---

<div class="post-metadata">

**Author:** ![ARNAV\_A\_GUPTA](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/arnav_a_gupta/32/9660_2.png) [@ARNAV\_A\_GUPTA](https://discourse.processing.org/u/ARNAV_A_GUPTA)\
**Post date:** [June 20, 2020, 7:21pm UTC](https://discourse.processing.org/t/using-mouse-in-p5-is-a-bit-complicated/21990/17 "2020-06-20T19:21:49Z")

</div>

it is really hard without a code 🤣🤣🤣… ANYWAYS, i have got a better plan about it… @slow_izzm @SomeOne. THANKS FOR RESPONDING…
