mirror of
https://github.com/britzl/monarch.git
synced 2025-09-27 18:12:22 +02:00
scale_in and scale_out transactions
This commit is contained in:
@@ -10,6 +10,8 @@ local RIGHT = vmath.vector3(WIDTH * 2, 0, 0)
|
||||
local TOP = vmath.vector3(0, HEIGHT * 2, 0)
|
||||
local BOTTOM = vmath.vector3(0, - HEIGHT * 2, 0)
|
||||
|
||||
local ZERO_SCALE = vmath.vector3(0, 0, 1)
|
||||
|
||||
function M.instant(node, to, easing, duration, delay, url)
|
||||
msg.post(url, monarch.TRANSITION.DONE)
|
||||
end
|
||||
@@ -23,19 +25,19 @@ local function slide_in(direction, node, to, easing, duration, delay, url)
|
||||
end
|
||||
|
||||
function M.slide_in_left(node, to, easing, duration, delay, url)
|
||||
return slide_in(LEFT, node, to, easing, duration, delay, url)
|
||||
return slide_in(LEFT, node, to.pos, easing, duration, delay, url)
|
||||
end
|
||||
|
||||
function M.slide_in_right(node, to, easing, duration, delay, url)
|
||||
slide_in(RIGHT, node, to, easing, duration, delay, url)
|
||||
slide_in(RIGHT, node, to.pos, easing, duration, delay, url)
|
||||
end
|
||||
|
||||
function M.slide_in_top(node, to, easing, duration, delay, url)
|
||||
slide_in(TOP, node, to, easing, duration, delay, url)
|
||||
slide_in(TOP, node, to.pos, easing, duration, delay, url)
|
||||
end
|
||||
|
||||
function M.slide_in_bottom(node, to, easing, duration, delay, url)
|
||||
slide_in(BOTTOM, node, to, easing, duration, delay, url)
|
||||
slide_in(BOTTOM, node, to.pos, easing, duration, delay, url)
|
||||
end
|
||||
|
||||
|
||||
@@ -48,19 +50,33 @@ local function slide_out(direction, node, from, easing, duration, delay, url)
|
||||
end
|
||||
|
||||
function M.slide_out_left(node, from, easing, duration, delay, url)
|
||||
slide_out(LEFT, node, from, easing, duration, delay, url)
|
||||
slide_out(LEFT, node, from.pos, easing, duration, delay, url)
|
||||
end
|
||||
|
||||
function M.slide_out_right(node, from, easing, duration, delay, url)
|
||||
slide_out(RIGHT, node, from, easing, duration, delay, url)
|
||||
slide_out(RIGHT, node, from.pos, easing, duration, delay, url)
|
||||
end
|
||||
|
||||
function M.slide_out_top(node, from, easing, duration, delay, url)
|
||||
slide_out(TOP, node, from, easing, duration, delay, url)
|
||||
slide_out(TOP, node, from.pos, easing, duration, delay, url)
|
||||
end
|
||||
|
||||
function M.slide_out_bottom(node, from, easing, duration, delay, url)
|
||||
slide_out(BOTTOM, node, from, easing, duration, delay, url)
|
||||
slide_out(BOTTOM, node, from.pos, easing, duration, delay, url)
|
||||
end
|
||||
|
||||
function M.scale_in(node, to, easing, duration, delay, url)
|
||||
gui.set_scale(node, ZERO_SCALE)
|
||||
gui.animate(node, gui.PROP_SCALE, to.scale, easing, duration, delay, function()
|
||||
msg.post(url, monarch.TRANSITION.DONE)
|
||||
end)
|
||||
end
|
||||
|
||||
function M.scale_out(node, from, easing, duration, delay, url)
|
||||
gui.set_scale(node, from.scale)
|
||||
gui.animate(node, gui.PROP_SCALE, ZERO_SCALE, easing, duration, delay, function()
|
||||
msg.post(url, monarch.TRANSITION.DONE)
|
||||
end)
|
||||
end
|
||||
|
||||
--- Create a transition for a node
|
||||
@@ -77,7 +93,9 @@ function M.create(node)
|
||||
[monarch.TRANSITION.BACK_OUT] = M.instant,
|
||||
}
|
||||
|
||||
local initial_position = gui.get_position(node)
|
||||
local initial_data = {}
|
||||
initial_data.pos = gui.get_position(node)
|
||||
initial_data.scale = gui.get_scale(node)
|
||||
|
||||
-- Forward on_message calls here
|
||||
function instance.handle(message_id, message, sender)
|
||||
@@ -94,7 +112,7 @@ function M.create(node)
|
||||
-- @param delay Transition delay
|
||||
function instance.show_in(fn, easing, duration, delay)
|
||||
transitions[monarch.TRANSITION.SHOW_IN] = function(url)
|
||||
fn(node, initial_position, easing, duration, delay or 0, url)
|
||||
fn(node, initial_data, easing, duration, delay or 0, url)
|
||||
end
|
||||
return instance
|
||||
end
|
||||
@@ -103,7 +121,7 @@ function M.create(node)
|
||||
-- from when showing another screen
|
||||
function instance.show_out(fn, easing, duration, delay)
|
||||
transitions[monarch.TRANSITION.SHOW_OUT] = function(url)
|
||||
fn(node, initial_position, easing, duration, delay or 0, url)
|
||||
fn(node, initial_data, easing, duration, delay or 0, url)
|
||||
end
|
||||
return instance
|
||||
end
|
||||
@@ -112,7 +130,7 @@ function M.create(node)
|
||||
-- to when navigating back in the screen stack
|
||||
function instance.back_in(fn, easing, duration, delay)
|
||||
transitions[monarch.TRANSITION.BACK_IN] = function(url)
|
||||
fn(node, initial_position, easing, duration, delay or 0, url)
|
||||
fn(node, initial_data, easing, duration, delay or 0, url)
|
||||
end
|
||||
return instance
|
||||
end
|
||||
@@ -121,7 +139,7 @@ function M.create(node)
|
||||
-- from when navigating back in the screen stack
|
||||
function instance.back_out(fn, easing, duration, delay)
|
||||
transitions[monarch.TRANSITION.BACK_OUT] = function(url)
|
||||
fn(node, initial_position, easing, duration, delay or 0, url)
|
||||
fn(node, initial_data, easing, duration, delay or 0, url)
|
||||
end
|
||||
return instance
|
||||
end
|
||||
|
Reference in New Issue
Block a user