Newbie wants to know if one can run two handlers simultaneously
Dar Scott
dsc at swcp.com
Sun Dec 8 13:13:01 EST 2002
On Sunday, December 8, 2002, at 09:09 AM, MFitz53 at cs.com 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
handlers.
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
else
set backgroundColor of me to red
end if
end change
on startFlashing
if flashingID is empty then cycle
end startFlashing
on cycle
change
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