More easing types
The easing types provided out of the box with Corona are limited. Some of the classic easing types that people have long considered standard, like elastic, just aren’t there.
Fear not, these can be added through an external library. I found some code on the Corona site here: https://developer.anscamobile.com/code/more-easing.
Note: The discussion talks about changes and modifications to the first code block presented. The code I’m using here comes from further down the page at post #7.
This library expands the easing types to include the following new types:
- easeIn
- easOut
- easInOut
- easeOutIn
- easeInBack
- easeOutBack
- easeInOutBack
- easeOutInBack
- easeInBounce
- easeOutBounce
- easeInOutBounce
- easeOutInBounce
- easeInElastic
- easeOutElastic
- easeInOutElastic
- easeOutInElastic
These add a lot more possibilities to motion created with transition.to()
Here’s some sample code. The example below imports the new easing library and then applies an elastic ease to an object.
To make this example work you’ll need to get the code from the link above and save into a file named easingX.lua. This new file will need to be in the same folder as main.lua.
-- The easing methods included here expand on the default easing
-- included with Corona. The extra library of easing formulas is
-- imported through the easing.lua. The code for this was obtained
-- at: https://developer.anscamobile.com/code/more-easing
-- Note: The discussion talks about changes and modifications to
-- the first code block presented. The code I'm using here comes
-- from further down the page at post #7.
-- require the easingX library
easingX = require "easingX"
local box = display.newRect( 0, 0, 50, 50 )
box.x = display.contentCenterX
-- Note the use transition in the parameters.
-- get the newer easing ypes from easingX which was required above.
transition.to( box, {time=3000, y=display.contentCenterY, transition=easingX.easeOutElastic} )
Here you can see the box moves with an elastic quality swinging back and forth past the target value before settling into stop.