Button images script
Jim Hurley
jhurley at infostations.com
Sat Feb 22 18:10:01 EST 2003
> Greg Wills wrote:
>
>Thanks Jim, this works beautifully. I may however end up playing with
>the images to get them how I want them before I put them into the
>substack. Yet to be decided.
>
>I noticed that the images in the substack are also resized, but when
>you re-open the stacks, all the images (and button images - but not
>buttons) are back to their original size.
Greg,
I left out a key component of the process. *Sorry*.
You need to include a preOpenCard handler in the *stack* script. (If
you have any preOpenCard handlers in the card scripts, be sure to
"pass preOpenCard" in those handlers.)
on preOpenCard
repeat with i = 1 to the number of buttons
put the short name of button i into tName
resizeImage tName
end repeat
end preOpenCard
Where ResizeImage resides in the stack script and looks like this:
on resizeImage theImage
--First get the button width
put the width of button theImage into theButtonWidth
--Reset the image size on the substack card
--so that it will fit inside the button without distortion.
set the defaultStack to "imagesSubstack"
put the formattedWidth of image theImage into tImageWidth
Put the formattedHeight of image theImage into tImageHeight
put tImageWidth/tImageHeight into ratioOfWidthToHeight
set the width of image theImage to theButtonWidth*.94 -- Leave an edge
set the height of image theImage to theButtonWidth/ratioOfWidthToHeight*.94
--Adjust the button height to match the proportions of the image.
set the defaultstack to "images"
set the height of button theImage to theButtonWidth/ratioOfWidthToHeight
end resizeImageRevisedFormatted
So that before each card is opened, the image in the substack is
sized to fit within each button. This is quite fast and very smooth.
I use this method because I use the same image in different cards at
*different sizes*.
*If the image sizes are fixed*, things are much simpler. You could
alter the "setUp" handler to include
set the locklocation of image theButtonName to "true"
This also locks the image size. (The button name is the same as the
image name.)
In this way there is no need for a preOpenCard handler and once the
setUp handler is run, when you first construct the stack, you are
done. Next time the stack is opened all images will be sized to fit
within their respective buttons and the image sizes in the subStack
will be locked.
You can of course take the manual approach and import the images to
the substack, lock them, and then fit the buttons to fit the images.
But I find this more time consuming when there are lots of images.
I hope I haven't left something out again.
Jim
More information about the use-livecode
mailing list