Dragging multiple sprites
December 25, 1997
by Alex Zavatone
Here is some quick code to create a bunch of objects that drag as one. This code is to be called from a sprite's mouseDown
script and does have a repeat loop which will suspend most other background events on the Mac but not on Windows.
All the sprites should be ordered in the score one after the other with the sample code being called from the first sprite's mouseDown. The list of sprites to drag is relative to the starting sprite number and is defined in the list called mySprites
. Each of these sprites are puppeted on mouseDown
and left that way on mouseUp
. During fast dragging, there are some flickers as sprites reposition themselves. I can't find anywhere in the code that would cause this but it's rather minor. The line where mouseLoc
is defined is an attempt to minimize this misbehavior.
Also, my standard disclaimer of "it could be written better" always applies but hey, it works, it's free, have fun! Oh, this should work in Director 4, 5 and 6.
-- Copyright 1998 by Zav - Alex Zavatone for Director-Online
-- use as you see fit and please give credit if used a project
on Drag set mySprites = [0,1,2,3,4,5,6,7] set oldLocations = [:] set mySprite = the clickOn set myLoc = point(the mouseH, the mouseV) repeat with mySpriteNum in mySprites set theSprite = mySprite + mySpriteNum puppetSprite theSprite, 1 addProp oldLocations, theSprite, ¬ the loc of sprite theSprite - myLoc end repeat repeat while the mousedown set mouseLoc = point( the mouseH, the mouseV) repeat with mySpriteNum in mySprites set theSprite = mySprite + mySpriteNum set the loc of sprite theSprite = ¬ getProp(oldLocations,theSprite) + mouseLoc end repeat updatestage end repeat endA demo movie (used to create the Shockwave movie) is available for download (SIT or ZIP).
Copyright 1997-2024, Director Online. Article content copyright by respective authors.