Log scales = animation scales?

Scott Rossi scott at tactilemedia.com
Sat Jul 14 22:17:42 EDT 2007


Recently, David Bovill wrote:

> Are there any ideas for natural type movements - straight acceleration
> (maybe with ease in and / or ease out)?

You're welcome to use the following (watch wraps).  It's set up as a handler
with parameters to allow for easing (moving) multiple objects at once.  So
you can place the code in the card script, for example, and call
"easeObject..." for each object on the card you want to move.
(Requires Rev 2.7 or later for object fading.)

# EASE IN/OUT ANIMATION SCRIPT
#
# VARIABLE DESCRIPTIONS
# pObj = LONG ID OF OBJECT TO MOVE
# pStartLoc = STARTING LOCATION
# pDestLoc = ENDING LOCATION
# pMethod = "IN" OR "OUT" -- "IN" DECELERATES, "OUT" ACCELLERTATES
# pDuration = DURATION OF EASE EFFECT
# pStartTime = TIME IN MILLISECONDS WHEN EASE EFFECT BEGINS
# pFade = "IN" OR "OUT" -- OPTIONAL FADE IN/OUT OF EASED OBJECT
# pHost = LONG ID OF OBJECT TO RECEIVE 'EASEDONE' MESSAGE

on easeObject 
pObj,pStartLoc,pDestLoc,pMethod,pDuration,pStartTime,pFade,pHost
  put (the millisecs - pStartTime)/pDuration into phi
  # REQUIRED FOR SHORT MOVE TIMES
  if phi > 1 then put 1 into phi
  # USE APPROPRIATE FUNCTION
  if pMethod = "in" then put (2*phi - phi^2) into tEase # EASE IN
  if pMethod = "out" then put phi^2 into tEase # EASE OUT
  # MOVE OBJECT
  put (item 1 of pDestLoc - item 1 of pStartLoc) into xDist
  put (item 2 of pDestLoc - item 2 of pStartLoc) into yDist
  put item 1 of pStartLoc + round(tEase * xDist) into newX
  put item 2 of pStartLoc + round(tEase * yDist) into newY
  set loc of pObj to newX,newY
  if pFade = "in" then set blendLevel of pObj to 100 - (phi * 100)
  if pFade = "out" then set blendLevel of pObj to (phi * 100)
  # EXIT WHEN OBJECT REACHES ITS DESTINATION
  if ((newX,newY) = pDestLoc) or (phi >= 1) then
    send "easeDone pObj" to pHost
    exit easeObject
  end if
  # LOOP SCRIPT
  send "easeObject 
pObj,pStartLoc,pDestLoc,pMethod,pDuration,pStartTime,pFade,pHost" to me in
10 milliseconds
end easeObject


Regards,

Scott Rossi
Creative Director
Tactile Media, Multimedia & Design





More information about the use-livecode mailing list