OK, I'll have to I'll have to correct you.  In the original posting, 
the question was about having two behaviors attached to the same 
sprite and how to send a message from one behavior to the other 
behavior.

If you do what I suggest, by using "spriteNum" instead of hard-coding 
the number, the property variable "spriteNum" will automatically be 
given the proper value, in this case 3.  "spriteNum" does not get a 
reference to the sprite (as in sprite(3)), it gets the actual value 
3.  So the sendSprite call broadcasts a message to _all_ behaviors 
attached to sprite 3.   The receiver of this message is in a 
different behavior.

So here's an example.  Let's say you have two behaviors A and B that 
are both attached to sprite 3:

-- Behavior A
property spriteNum

on mouseUp me
    sendSprite(spriteNum, #someSpecialHandlerName, someValue)
end


-- Behavior B
on someSpecialHandlerName me, someParameter  -- don't forget the "me"
    -- do some code here
end


The question is why would you want to do such a thing?  And the 
answer is for re-use of behaviors.  This is my standard way of 
handling buttons.  I use a generic button script on all my buttons, 
and when that behavior determines that the button has been clicked 
on, it does a:

    sendSprite(spriteNum, #mHit)

I also attach a second behavior to all my buttons to carry out the 
action of the button in an "mHit" handler.  For example, let's say I 
have a Previous and a Next button.  On both buttons I add my generic 
button behavior that handles rollovers, and down and up and gray 
states.  Then on the Previous button I add a behavior that has an 
mHit handler that does the proper code for whatever I do when 
Previous is hit.  And on the Next button, I add a behavior that has 
an "on mHit" handler that does what I want to do when the Next button 
is hit.  For more details on this, see my article on DOUG at:

   http://www.director-online.com/accessArticle2.cfm?id=340

Irv


At 4:35 PM +0100 6/22/01, Pete Carss wrote:
>Correct me if I'm wrong - I mean this - CORRECT me if I'm wrong - 
>but in the case below wouldn't "spriteNum" hold a reference to the 
>sprite that the behaviour was attached to - and in effect, the 
>behaviour would be sending the message to itself?
>
>Pete
>
>On Friday, June 22, 2001, at 03:57 PM, Irv Kalb wrote:
>
>>Others have already pointed out the need for the "me" variable. 
>>But I'll add something else.  If you have a behavior where to want 
>>to send something to the same sprite number, instead of hard coding 
>>the sprite number, use the built in "spriteNum" variable.  For 
>>example, instead of:
>>
>>  sendSprite(3, #checkRight, 15)
>>
>>use
>>
>>   sendSprite(spriteNum, #checkRight, 15)
>>
>>And be sure to declare "property spriteNum" as the top of the 
>>script. This makes the behavior much more general.  You could use 
>>it in any channel, and it will continue to work if you move your 
>>sprite from channel 3 to some other channel.
>>
>>Irv



-- 

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/LUJ/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!]

Reply via email to