mirror of
https://github.com/britzl/monarch.git
synced 2025-09-28 10:32:21 +02:00
Added helpers for common sets of transitions
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
local monarch = require "monarch.monarch"
|
||||
local easings = require "monarch.transitions.easings"
|
||||
|
||||
local M = {}
|
||||
|
||||
@@ -198,4 +199,60 @@ function M.create(node)
|
||||
return instance
|
||||
end
|
||||
|
||||
|
||||
--- Create transition where the screen slides in from the right when shown and out
|
||||
-- to the left when hidden (and the reverse when going back)
|
||||
-- @param node
|
||||
-- @param duration
|
||||
-- @param delay Optional. Defaults to 0
|
||||
-- @param easing Optional. A constant from monarch.transitions.easing
|
||||
-- @return Transition instance
|
||||
function M.in_right_out_left(node, duration, delay, easing)
|
||||
assert(node, "You must provide a node")
|
||||
assert(duration, "You must provide a duration")
|
||||
easing = easing or easings.QUAD()
|
||||
return M.create(node)
|
||||
.show_in(M.slide_in_right, easing.OUT, duration, delay or 0)
|
||||
.show_out(M.slide_out_left, easing.IN, duration, delay or 0)
|
||||
.back_in(M.slide_in_left, easing.OUT, duration, delay or 0)
|
||||
.back_out(M.slide_out_right, easing.IN, duration, delay or 0)
|
||||
end
|
||||
|
||||
|
||||
function M.in_left_out_right(node, duration, delay, easing)
|
||||
assert(node, "You must provide a node")
|
||||
assert(duration, "You must provide a duration")
|
||||
easing = easing or easings.QUAD()
|
||||
return M.create(node)
|
||||
.show_in(M.slide_in_left, easing.OUT, duration, delay or 0)
|
||||
.show_out(M.slide_out_right, easing.IN, duration, delay or 0)
|
||||
.back_in(M.slide_in_right, easing.OUT, duration, delay or 0)
|
||||
.back_out(M.slide_out_left, easing.IN, duration, delay or 0)
|
||||
end
|
||||
|
||||
|
||||
function M.in_right_out_right(node, duration, delay, easing)
|
||||
assert(node, "You must provide a node")
|
||||
assert(duration, "You must provide a duration")
|
||||
easing = easing or easings.QUAD()
|
||||
return M.create(node)
|
||||
.show_in(M.slide_in_right, easing.OUT, duration, delay or 0)
|
||||
.show_out(M.slide_out_right, easing.IN, duration, delay or 0)
|
||||
.back_in(M.slide_in_right, easing.OUT, duration, delay or 0)
|
||||
.back_out(M.slide_out_right, easing.IN, duration, delay or 0)
|
||||
end
|
||||
|
||||
|
||||
function M.in_left_out_left(node, duration, delay, easing)
|
||||
assert(node, "You must provide a node")
|
||||
assert(duration, "You must provide a duration")
|
||||
easing = easing or easings.QUAD()
|
||||
return M.create(node)
|
||||
.show_in(M.slide_in_left, easing.OUT, duration, delay or 0)
|
||||
.show_out(M.slide_out_left, easing.IN, duration, delay or 0)
|
||||
.back_in(M.slide_in_left, easing.OUT, duration, delay or 0)
|
||||
.back_out(M.slide_out_left, easing.IN, duration, delay or 0)
|
||||
end
|
||||
|
||||
|
||||
return M
|
||||
|
Reference in New Issue
Block a user