Evaluate conditions only once

I’d like some condition object that would execute actions linked to condition only once, unless one of conditions changes.

Example:

Mouse button is pressed -> move object by 3 pixels

would constantly move object unless you let go mouse button.

Mouse button is pressed -> move object by 3 pixels Once

would move object only one time when all other conditions are met. When one of conditions changes, whole thing is re-evaluated and executed again when all conditions are met. In this case, it would be moved by 3 pixels only after initial click (no matter how long you pressed button), then after letting mouse button go and clicking again, it would be moved again by 3 pixels - only once.

It could be a good idea of a new event type (even if you can already did the same thing with the help of a variable).

An event type would do the job, but I think it would be a bit hard to use, or not convenient at least… Maybe a condition would be easier to use, but it is more tricky to implement it properly.