Hello Scott, Thanks for posting your script. I just tried it on a small collection of controls and images and it worked well. Much appreciated.
Scott Morrow Elementary Software (Now with 20% less chalk dust!) web http://elementarysoftware.com/ email sc...@elementarysoftware.com ------------------------------------------------------ On Dec 10, 2009, at 9:00 PM, Scott Rossi wrote: > Thanks to all who replied about my scaling groups question. > As it turns out, I was able to come up with a solution in about a tenth of > the time > I thought it would take (and I was dreading it). > > The biggest issue for me is Rev’s reliance on integers for object > positioning -- > this is a serious limitation when it comes to scaling because object > dimensions can get heavily distorted when the objects are repeatedly scaled. > I needed a way to keep object dimensions from getting too messed up if the > user wants > to size a group up and down repeatedly. The only way I know how to do this > is to store the original dimensions and refer to those whenever an object is > scaled. > The following code does this, called from a scrollbar whose start/end values > are 50 and 200 (equates to 50% and 200%). Objects are initialized with > their > “starting” specs, and since those specs are always used in the code, scaling > is as > distortion-free as possible: > > on scrollbarDrag pValue > scaleGroup long id of grp “my great group”,pValue > end scrollbarDrag > > on scaleGroup pGroup,pValue > initObjSpecs pGroup > put pValue/100 into tPercent > put loc of pGroup into masterLoc > lock screen > set width of pGroup to the uDefaultWidth of pGroup * tPercent > set height of pGroup to the uDefaultHeight of pGroup * tPercent > set loc of pGroup to masterLoc > repeat with N = 1 to number of controls of pGroup > put long id of control N of pGroup into tObj > set width of tObj to (item 1 of the uOrigDimensions of tObj * > tPercent) > set height of tObj to (item 2 of the uOrigDimensions of tObj * > tPercent) > put item 1 of masterLoc - (item 1 of the uOrigOffset of tObj * > tPercent) into X > put item 2 of masterLoc - (item 2 of the uOrigOffset of tObj * > tPercent) into Y > set loc of tObj to X,Y > end repeat > set loc of pGroup to masterLoc > unlock screen > end scaleGroup > > on initObjSpecs pGroup > put loc of pGroup into masterLoc > if the uDefaultWidth of pGroup = "" then set the uDefaultWidth of pGroup > to width of pGroup > if the uDefaultHeight of pGroup = "" then set the uDefaultHeight of > pGroup to height of pGroup > put the number of controls of pGroup into objCount > repeat with N = 1 to objCount > put long id of control N of pGroup into tObj > if the uOrigOffset of tObj <> "" and the uOrigDimensions of tObj <> "" > then next repeat > put loc of tObj into objLoc > set the uOrigOffset of tObj to item 1 of masterLoc - item 1 of > objLoc,item 2 of masterLoc - item 2 of objLoc > set the uOrigDimensions of tObj to width of tObj,height of tObj > end repeat > end initObjSpecs > > > Maybe other folks will find this useful. > > Regards, > > Scott Rossi > Creative Director > Tactile Media, Multimedia & Design > > _______________________________________________ > use-revolution mailing list > use-revolution@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-revolution _______________________________________________ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution