Text field formatting
Trevor DeVore
lists at mangomultimedia.com
Tue Oct 28 15:29:10 EST 2003
On Tuesday, October 28, 2003, at 01:02 PM, Thomas J McGrath III wrote:
>
> Also, I already figured the special effects would be rebuilt in REV
> from scratch. But, I was wondering if any one built some functions to
> handle the built in abilities in REV for animation type effects???? If
> I do this I will write my own for this and future projects and upload
> but it would be nice to have a Build slide via first bullet/every
> line/ every word etc. function.
> it would be nice to have a few affects to animate a text field with
> that are straight forward and simple.
If you want to just animate the whole text field you could use these
functions from an animation library I am working on. It uses cosine
interpolation to animate and is easy enough to use. I converted the
code from some examples in the book Interactive QuickTime by Matthew
Peterson (excellent book not only for QuickTime but all media based
programming).
Put both of the functions below somewhere where they are available to
all of your scripts and then call it with something like this:
libAnim_Ease short id of field "MyField", long owner of field
"MyField", 0, 200, 0, 200, true, 10, 20
This would move your field from 0,0 to 50,200 and send the message
"libAnim_Finished" to the object you were animating when the animation
was done. It would move the object every 10 milliseconds and do the
entire animation in 20 steps.
Hope this helps,
--
Trevor DeVore
Blue Mango Multimedia
trevor at mangomultimedia.com
/**
* Performs the ease animation on an object
*
* @param pObjID objID ID of the object to animate
* @param pOwner obj Owner of the object to animate
* @param pStartX integer Starting x position
* @param pEndX integer Ending x position
* @param pStartY integer Starting y position
* @param pEndY integer Ending y position
* @param pWithMsgs boolean Whether to send updates to object on
updates and finishing.
* @param pSpeed integer Speed of animation in milliseconds. How
often message is sent.
* @param pNumSteps integer Number of steps to do the animation in
*/
on libAnim_Ease pObjID, pOwner, pStartX, pEndX, pStartY, pEndY,
pWithMsgs, pSpeed, pNumsteps
local tTarget
put "control id " & pObjID & " of " & pOwner into tTarget
set the libAnim["uCurrentStep"] of tTarget to 1
set the libAnim["uNumSteps"] of tTarget to pNumsteps
set the libAnim["uStepSizeX"] of tTarget to (pEndX - pStartX) /
pNumSteps
set the libAnim["uStepSizeY"] of tTarget to (pEndY - pStartY) /
pNumSteps
set the libAnim["uStepAngle"] of tTarget to 2 * pi / pNumSteps
set the libAnim["uSendMessages"] of tTarget to pWithMsgs
set loc of tTarget to pStartX, pStartY
# Start animation
libAnim_CosineInterpolation pObjID, pOwner, pSpeed
end libAnim_Ease
/**
* Animates an object using cosine interpolation
*
* @param pObj objID ID of control to animate
* @param pOwner obj Owner of the object (long owner)
* @param pSpeed integer How often to resend the message in
milliseconds.
*/
on libAnim_CosineInterpolation pObjID, pObjOwner pSpeed
local tVelocityScale
local tTarget
put "control id " & pObjID & " of " & pObjOwner into tTarget
put 1 - \
cos (the libAnim["uCurrentStep"] of tTarget * the
libAnim["uStepAngle"] of tTarget) \
into tVelocityScale
put item 1 of loc of tTarget into tX
put item 2 of loc of tTarget into tY
set loc of tTarget to (tX + (tVelocityScale * the
libAnim["uStepSizeX"] of tTarget), \
tY + (tVelocityScale * the libAnim["uStepSizeY"] of tTarget))
set the libAnim["uCurrentStep"] of tTarget to the
libAnim["uCurrentStep"] of tTarget + 1
if (the libAnim["uCurrentStep"] of tTarget <= the
libAnim["uNumSteps"] of tTarget) then
send "libAnim_CosineInterpolation" && pObjID &","& pObjOwner & ","
& pSpeed to me in pSpeed milliseconds
else
if (the libAnim["uSendMessages"] of tTarget = true) then
send "libAnim_Finished" to tTarget
end if
end if
end libAnim_CosineInterpolation
More information about the use-livecode
mailing list