local backAndForthGenerator = function (ease) return function(t, tMax, start, delta) if t / tMax < 0.5 then return ease(t, tMax * 0.5, start, delta) else return ease(tMax - t, tMax * 0.5, start, delta) end end end display.setStatusBar(display.statusBarHidden) local square = display.newRect( 0, 0, 50, 50 ) local _W, _H = display.contentWidth, display.contentHeight square.x = _W * 0.5 square.y = _H * 0.8 transition.to(square, {time = 1000, y = 30, transition = backAndForthGenerator(easing.outExpo), iterations = 10})