You need what I call the 'card shuffle' script. Attach this script to each
sprite you want the user to click on and bring to the front:
on mouseDown
global topSprite
set thisOne = the member of sprite (the clickOn)
set thisLoc = the loc of sprite (the clickOn)
repeat with x = topSprite down to the clickOn
set thatOne = the member of sprite x
set thatLoc = the loc of sprite x
set the member of sprite x = thisOne
set the loc of sprite x = thisLoc
set thisOne = thatOne
set thisLoc = thatLoc
end repeat
set offsetH = the locH of sprite topSprite - the mouseH
set offsetV = the locV of sprite topSprite - the mouseV
repeat while the mouseDown
set the locH of sprite topSprite = the mouseH + offsetH
set the locV of sprite topSprite = the mouseV + offsetV
updateStage
end repeat
end
This script depends on the fact that sprites don't really exist. They are
just bundles of properties read (in effect) from a spreadsheet. Therefore
if you give all the properties of a sprite in (for example) channel 57 to a
sprite in channel 66 it will effectively "become" that sprite.
The script is in three parts. The first part sets up all the sprite
properties you want to shuffle. You can add or vary these.
The second part (the repeat loop) does the actual shuffling.
The third part (set offsetH...) is an extra bit that enables you to drag
big sprites like playing cards by the corner without them centring
themselves under the mouse. You can dump that if its not necessary (or use
it on its own elsewhere).
The TOPSPRITE global is there because I wanted to be able to change the
sprites that were being shuffled on the fly. If you don't need to do that
then its not necessary because you can hardwire the top channel, as in:
on mouseDown
set thisOne = the member of sprite (the clickOn)
set thisLoc = the loc of sprite (the clickOn)
repeat with x = 23 down to the clickOn
etc...
where 23 is the number of the highest channel containing a piece the user
can select and bring tothe front.
You definitely DON'T need any extra channels. In fact using an extra
channel is going to cause problems where none need exist!
Hope this is useful.
Cheers
Owen
D. Plänitz