Possible Bug with the When block

So whenever I use the when block if I bought for say when touching sprite move forward 10 steps but when I do it it loops it so it keeps moving 10 steps even when it stops touching it. Idk if this is a bug or it is supposed to be like this.

Project link?

I did a different code in it (I used the if command instead) but I tried it in different forms to and it kept looping. I think it may be a bug.

It was in the pong project.

It looked somewhat like this: untitled script pic

it's running forever because there's a forever loop. scripts headed with generic hat blocks don't run in the background. just remove the forever loop and the block to go to the center

But it also loops the top bit that isn't in a loop.

Huh, maybe it does run the scripts in the background. Weird.
That's not a bug, that's intended behavior. You should really just use a forever loop over a when block in most cases.

K thanks!