Newbie wants to know if one can run two handlers simultaneously

Dar Scott dsc at
Sun Dec 8 13:13:01 EST 2002

On Sunday, December 8, 2002, at 09:09 AM, MFitz53 at wrote:

> I'm attempting to make a simple little shootem up game. I have the 
> basic shoot button that draws a line from one loc to the loc of 
>  button"enemy" and plays a sound effect. What I'd like to do is 
> initiate a handler to move the button around the screen(I have that 
> covered) and use the mouseUp handler from the shoot btn to stop the 
> first handler from running it shoots, sounds off and changes the btn 
> icon. At this point, I have to wait until the first handler finishes 
> running before being able to shoot at a motionless target. I'm making 
> this for a kid just turned 4 years old, but I think even that would be 
> pretty unexciting for him. All ideas are appreciated.
You are about to enter the Revolution way of doing real-time 
programming.  It might take a new way of thinking.  It will require 
rewriting how you move the button around the screen.  It will be worth 
the effort.

1.  Limit the time it takes to execute a handler.  Don't wait around in 
2.  Use a handler to change the state of your game, start moves and then 
get out of there.
3.  Use game messages to execute the handers:
          A.  Mouse messages (as you are doing)
          B.  "send ... in time" messages (might be new)

Read about "send" and "cancel" commands.  To stop a cycle of sends, use 
cancel or clear a flag.

Here is an example for a flashing light.  It is a simplification of one 
of my first scripts using send.  I put this script in a circle:
local flashingID

on change
   if backgroundColor of me is red then
     set backgroundColor of me to green
     set backgroundColor of me to red
   end if
end change

on startFlashing
   if flashingID is empty then cycle
end startFlashing

on cycle
   send cycle to me in 333 milliseconds
   put the result into flashingID
end cycle

on stopFlashing
   cancel flashingID  -- don't bother testing for empty
   put empty into flashingID
end stopFlashing

My "Start" button has this script:
on mouseUp
   send startFlashing to graphic "Flasher"
end mouseUp

The stop button is similar.

You should be able to adapt that to your moving enemy.

Dar Scott

More information about the Use-livecode mailing list