Tutorial: When Pressed followed by When Released (all in one When)

#1

Hi Hops - Today I thought I’d show you a way to code When Pressed followed by When Released all within one event (When Rule)

Example uses:

  • Drag an object when pressed, then do something specific when released
  • Make a button change when pressed, then “click” (do what ever) when released

First, however, I’ll refer you back to the
Tutorial: Using Constants (and custom rule: Watch Pressed State). That topic shows a different way the same effect could be achieved. But when you specifically want a When Pressed that’s followed by a When Released, the method I’ll show below is a bit more elegant. If you haven’t read that topic or haven’t started using constants when you code, I highly recommend reading it and you’ll be coding like a pro in no time.

When Pressed followed by When Released

The order of objects is important so let’s have a look at the list of objects in my example:

The rules within the objects will execute sequentially in the order that the objects are in. Almost every project I make has Main as the first object. It’s just a blank text object. I use this to hold When Game Starts rules that I want to execute first (if you’re not sure why that matters, read the tutorial on constants linked above) or to hold rules I want to execute 1st during every frame.

So, we’re coding a chess game and want the pieces to drag when pressed, then snap to the center of the nearest square when released. How should we do that? Don’t worry. I won’t go into all that detail, but let’s see how to set it up so the code executes when we want it to.

The first thing we want to happen every frame, is to set a boolean (that’s a variable that equals either 1 or 0) to indicate if the device is being pressed during that frame. So we add this to the object Main:

Then we added a When (self) is Pressed to the desired object(s). Inside there, we’ll use recursion to get the 1st section of code to loop (note the ‘Drag until released’ ability directs the code back to itself) while the device /object is pressed. Then when the Main object sets the variable Pressed to 0 (when the press is released), it continues on to where we’ll put the code that should run when the object is released.

And that’s it. A simple, elegant solution for When Pressed followed by When Released.

Happy coding :smiley:

24 Likes
Stuff that should really be added to Hopscotch!
#2

Good tutorial, will be helpful to lots

9 Likes
#3

I agree with AE, super great, pretty simple tutorial that I’m sure many people will find helpful. Nicely done haha

7 Likes
#4

This is very helpful! Can’t wait to implement it in a project. I’m assuming the code is ftu?

5 Likes
#5

Probably idk why it would not be

4 Likes
#6

Very good tutorial! As everything coming from you, it is very well written and descriptive.

4 Likes
#7

Great tutorial! I love how descriptive this was and how well you explained these blocks.

2 Likes
#8

Thank you!! This is very helpful!
The images make it very easy to understand!

(I can’t believe all this time I didn’t know about when not pressed)

1 Like