diff --git a/README.md b/README.md index 094c7da..6fdcf32 100644 --- a/README.md +++ b/README.md @@ -162,6 +162,8 @@ The predefined transitions provided by ```monarch.transitions.gui``` are: * ```slide_out_bottom``` * ```scale_in``` * ```scale_out``` +* ```fade_in``` - Set node alpha to fully transparent (i.e. 0.0) and fade to fully opaque (i.e. 1.0) +* ```fade_out``` - Set node alpha to fully opaque (i.e. 1.0) and fade to fully transparent (i.e. 0.0) Additionally there's functionality to create a full set of transitions for common transition styles: @@ -169,6 +171,7 @@ Additionally there's functionality to create a full set of transitions for commo * ```transitions.in_left_out_right(node, duration, [delay], [easing])``` * ```transitions.in_left_out_left(node, duration, [delay], [easing])``` * ```transitions.in_right_out_right(node, duration, [delay], [easing])``` +* ```transitions.fade_in_out(node, duration, [delay], [easing])``` **PARAMETERS** * ```node``` (node) - Gui node to animate. diff --git a/example/menu.gui_script b/example/menu.gui_script index 450da44..beebdb2 100644 --- a/example/menu.gui_script +++ b/example/menu.gui_script @@ -6,7 +6,7 @@ function init(self) gui.set_text(gui.get_node("timestamp"), os.date()) - self.transition = transitions.in_right_out_left(gui.get_node("root"), 0.6, 0) + self.transition = transitions.fade_in_out(gui.get_node("root"), 0.6, 0) end function on_input(self, action_id, action) diff --git a/monarch/transitions/gui.lua b/monarch/transitions/gui.lua index 7c710b8..da40c37 100644 --- a/monarch/transitions/gui.lua +++ b/monarch/transitions/gui.lua @@ -88,6 +88,22 @@ function M.scale_out(node, from, easing, duration, delay, cb) gui.animate(node, gui.PROP_SCALE, ZERO_SCALE, easing, duration, delay, cb) end +function M.fade_out(node, from, easing, duration, delay, cb) + local to = gui.get_color(node) + to.w = 1 + gui.set_color(node, to) + to.w = 0 + gui.animate(node, gui.PROP_COLOR, to, easing, duration, delay, cb) +end + +function M.fade_in(node, from, easing, duration, delay, cb) + local to = gui.get_color(node) + to.w = 0 + gui.set_color(node, to) + to.w = 1 + gui.animate(node, gui.PROP_COLOR, to, easing, duration, delay, cb) +end + --- Create a transition for a node -- @return Transition instance function M.create(node) @@ -255,4 +271,16 @@ function M.in_left_out_left(node, duration, delay, easing) end +function M.fade_in_out(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.fade_in, easing.OUT, duration, delay or 0) + .show_out(M.fade_out, easing.IN, duration, delay or 0) + .back_in(M.fade_in, easing.OUT, duration, delay or 0) + .back_out(M.fade_out, easing.IN, duration, delay or 0) +end + + return M