Carol, et al,
While these solutions do work, they are not very clear about what is
really going on. I've always felt that it is much more important to
write code that can be read easily both by yourself and by others
that may follow, than to try to write an obscure single line that
works, but is unreadable. It is also a good goal to write code that
is generic, that is, it will work in many cases.
You are basically talking about a "toggle" button - a button with two
states. There are two parts to this, what you see on the screen, and
the "internal" state of the button. First thing to do is to come up
with a naming convention for the two states, for example "<Some base
name> on" and "<Some base name> off". Given a naming convention like
this, here is a start at the behavior (with minor testing):
property pMemberOn
property pMemberOff
property pState -- TRUE for on, FALSE for off
property spriteNum
on beginSprite me
-- First determine if we are starting in the on or off state
-- and find the matching alternate state button
theName = sprite(spriteNum).member.name
theBaseName = word 1 of theName
theCurrentState = word 2 of theName
if theCurrentState = "on" then
pMemberOn = sprite(spriteNum).member
pMemberOff = member(theBaseName & " off")
pState = TRUE
else
pMemberOff = sprite(spriteNum).member
pMemberOn = member(theBaseName & " on")
pState = 0
end if
end
on mouseUp me
-- Now toggle the state and show the new button on the screen
pState = not(pState)
if pState then
sprite(spriteNum).member = pMemberOn
else
sprite(spriteNum).member = pMemberOff
end if
-- now send out a special call to a sibling sprite to say that the
toggle was hit.
sendSprite(spriteNum, #mHitToggleButton, pState)
end
This way you can re-use this same behavior on every toggle button in
your project.
When you attach this behavior, then you need to attach another
behavior to say what should be done when this button is hit.
Something like this:
on mHitToggleButton me, TrueOrFalse
if TrueOrFalse
-- do something here
else
-- do something else here
end if
end
Hope this helps.
Irv
At 11:19 AM -0500 1/25/02, Carol Mahaffy wrote:
>this worked perfectly! thanks guys for the input. Is this considered like a
>"push" or "pop" in a list? I am asking that beasuse my strength is in
>javascript and i would have never thought to use that logic for solving
>this. thanks again guys
>-- carol
>
>> ----------
>> From: Daniel Plaenitz
>> Reply To: [EMAIL PROTECTED]
>> Sent: Friday, January 25, 2002 6:30 AM
>> To: [EMAIL PROTECTED]; Lingo List (E-mail)
>> Subject: Re: <lingo-l> not statement
>>
>> At 18:32 24.01.2002 -0500, Carol Mahaffy wrote:
>> >hey list --
>> >simple question.. i thought i saw something a while ago... a simple
>> toggle
>> >using a "not" to swap sprites but i am really getting the syntax wrong.
>> can
>> >anyone help? heres the code
>> >
>> >on mouseUp me
>> > member("music_on").name = not member("music_off").name
>> >end
>> >
>> >i know i am not calling the sprites right but i have spent a good portion
>> of
>> >the last 2 hours looking for where i saw the reference and have come up
>> >empty. thanks
>> >--carol
>>
>> Carol,
>>
>> supposed you have named the members "0" and "1" you might use a behavior
>> like this one:
>>
>> -----------------------
>> property mySprite
>>
>> on beginsprite me
>> mySprite = sprite(me.spritenum)
>> end
>>
>> on mouseUp me
>> mySprite.member = \
>> member(["0","1"][(not(["0","1"].getPos(mysprite.member.name)-1)+1)])
>> end
>> -----------------------
>>
>> best regards
>>
>> daniel plaenitz
>> [To remove yourself from this list, or to change to digest mode, go to
>> http://www.penworks.com/lingo-l.cgi To post messages to the list, email
>> [EMAIL PROTECTED] (Problems, email [EMAIL PROTECTED]). Lingo-L
>> is for learning and helping with programming Lingo. Thanks!]
>>
>>
>[To remove yourself from this list, or to change to digest mode, go
>to http://www.penworks.com/lingo-l.cgi To post messages to the
>list, email [EMAIL PROTECTED] (Problems, email
>[EMAIL PROTECTED]). Lingo-L is for learning and helping with
>programming Lingo. Thanks!]
--
Lingo / Director / Shockwave development for all occasions.
(Home-made Lingo cooked up fresh every day just for you.)
[To remove yourself from this list, or to change to digest mode, go to
http://www.penworks.com/lingo-l.cgi To post messages to the list, email
[EMAIL PROTECTED] (Problems, email [EMAIL PROTECTED]). Lingo-L is for
learning and helping with programming Lingo. Thanks!]