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:
@@ -8,10 +8,10 @@ function init(self)
|
|||||||
gui.set_render_order(15)
|
gui.set_render_order(15)
|
||||||
|
|
||||||
self.transition = transitions.create(gui.get_node("root"))
|
self.transition = transitions.create(gui.get_node("root"))
|
||||||
.show_in(transitions.slide_in_top, gui.EASING_OUTQUAD, 0.6, 0)
|
.show_in(transitions.scale_in, gui.EASING_OUTBACK, 0.3, 0)
|
||||||
.show_out(transitions.slide_out_top, gui.EASING_INQUAD, 0.6, 0)
|
.show_out(transitions.scale_out, gui.EASING_INBACK, 0.3, 0)
|
||||||
.back_in(transitions.slide_in_top, gui.EASING_OUTQUAD, 0.6, 0)
|
.back_in(transitions.scale_in, gui.EASING_OUTBACK, 0.3, 0)
|
||||||
.back_out(transitions.slide_out_top, gui.EASING_INQUAD, 0.6, 0)
|
.back_out(transitions.scale_out, gui.EASING_INBACK, 0.3, 0)
|
||||||
end
|
end
|
||||||
|
|
||||||
function on_input(self, action_id, action)
|
function on_input(self, action_id, action)
|
||||||
|
@@ -10,6 +10,8 @@ local RIGHT = vmath.vector3(WIDTH * 2, 0, 0)
|
|||||||
local TOP = vmath.vector3(0, HEIGHT * 2, 0)
|
local TOP = vmath.vector3(0, HEIGHT * 2, 0)
|
||||||
local BOTTOM = 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)
|
function M.instant(node, to, easing, duration, delay, url)
|
||||||
msg.post(url, monarch.TRANSITION.DONE)
|
msg.post(url, monarch.TRANSITION.DONE)
|
||||||
end
|
end
|
||||||
@@ -23,19 +25,19 @@ local function slide_in(direction, node, to, easing, duration, delay, url)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function M.slide_in_left(node, to, easing, duration, delay, url)
|
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
|
end
|
||||||
|
|
||||||
function M.slide_in_right(node, to, easing, duration, delay, url)
|
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
|
end
|
||||||
|
|
||||||
function M.slide_in_top(node, to, easing, duration, delay, url)
|
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
|
end
|
||||||
|
|
||||||
function M.slide_in_bottom(node, to, easing, duration, delay, url)
|
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
|
end
|
||||||
|
|
||||||
|
|
||||||
@@ -48,19 +50,33 @@ local function slide_out(direction, node, from, easing, duration, delay, url)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function M.slide_out_left(node, from, easing, duration, delay, url)
|
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
|
end
|
||||||
|
|
||||||
function M.slide_out_right(node, from, easing, duration, delay, url)
|
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
|
end
|
||||||
|
|
||||||
function M.slide_out_top(node, from, easing, duration, delay, url)
|
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
|
end
|
||||||
|
|
||||||
function M.slide_out_bottom(node, from, easing, duration, delay, url)
|
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
|
end
|
||||||
|
|
||||||
--- Create a transition for a node
|
--- Create a transition for a node
|
||||||
@@ -77,7 +93,9 @@ function M.create(node)
|
|||||||
[monarch.TRANSITION.BACK_OUT] = M.instant,
|
[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
|
-- Forward on_message calls here
|
||||||
function instance.handle(message_id, message, sender)
|
function instance.handle(message_id, message, sender)
|
||||||
@@ -94,7 +112,7 @@ function M.create(node)
|
|||||||
-- @param delay Transition delay
|
-- @param delay Transition delay
|
||||||
function instance.show_in(fn, easing, duration, delay)
|
function instance.show_in(fn, easing, duration, delay)
|
||||||
transitions[monarch.TRANSITION.SHOW_IN] = function(url)
|
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
|
end
|
||||||
return instance
|
return instance
|
||||||
end
|
end
|
||||||
@@ -103,7 +121,7 @@ function M.create(node)
|
|||||||
-- from when showing another screen
|
-- from when showing another screen
|
||||||
function instance.show_out(fn, easing, duration, delay)
|
function instance.show_out(fn, easing, duration, delay)
|
||||||
transitions[monarch.TRANSITION.SHOW_OUT] = function(url)
|
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
|
end
|
||||||
return instance
|
return instance
|
||||||
end
|
end
|
||||||
@@ -112,7 +130,7 @@ function M.create(node)
|
|||||||
-- to when navigating back in the screen stack
|
-- to when navigating back in the screen stack
|
||||||
function instance.back_in(fn, easing, duration, delay)
|
function instance.back_in(fn, easing, duration, delay)
|
||||||
transitions[monarch.TRANSITION.BACK_IN] = function(url)
|
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
|
end
|
||||||
return instance
|
return instance
|
||||||
end
|
end
|
||||||
@@ -121,7 +139,7 @@ function M.create(node)
|
|||||||
-- from when navigating back in the screen stack
|
-- from when navigating back in the screen stack
|
||||||
function instance.back_out(fn, easing, duration, delay)
|
function instance.back_out(fn, easing, duration, delay)
|
||||||
transitions[monarch.TRANSITION.BACK_OUT] = function(url)
|
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
|
end
|
||||||
return instance
|
return instance
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user