mirror of
https://github.com/britzl/monarch.git
synced 2025-09-27 10:02:21 +02:00
@@ -121,11 +121,15 @@ local function create()
|
|||||||
local current_transition = nil
|
local current_transition = nil
|
||||||
|
|
||||||
local function create_transition(transition_id, node, fn, easing, duration, delay)
|
local function create_transition(transition_id, node, fn, easing, duration, delay)
|
||||||
|
assert(transition_id, "You must provide a valid transition id")
|
||||||
|
assert(node, "You must provide a node")
|
||||||
|
assert(fn, "You must provide a transition function")
|
||||||
|
|
||||||
local t = transitions[transition_id]
|
local t = transitions[transition_id]
|
||||||
-- find if there's already a transition for the node in
|
-- find if there's already a transition for the node in
|
||||||
-- question and if so update it instead of creating a new
|
-- question and if so update it instead of creating a new
|
||||||
-- transition
|
-- transition
|
||||||
for _,transition in ipairs(t) do
|
for _,transition in ipairs(t.transitions) do
|
||||||
if transition.node == node then
|
if transition.node == node then
|
||||||
transition.fn = fn
|
transition.fn = fn
|
||||||
transition.easing = easing
|
transition.easing = easing
|
||||||
|
@@ -8,6 +8,12 @@ local easing = require "monarch.transitions.easings"
|
|||||||
|
|
||||||
return function()
|
return function()
|
||||||
|
|
||||||
|
local function wait_timeout(fn, ...)
|
||||||
|
local args = { ... }
|
||||||
|
cowait(function() return fn(unpack(args)) end, 5)
|
||||||
|
return fn(...)
|
||||||
|
end
|
||||||
|
|
||||||
describe("transitions", function()
|
describe("transitions", function()
|
||||||
before(function()
|
before(function()
|
||||||
mock_msg.mock()
|
mock_msg.mock()
|
||||||
@@ -22,6 +28,28 @@ describe("transitions", function()
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
||||||
|
it("should replace an existing transition with a new one", function()
|
||||||
|
local one = false
|
||||||
|
function dummy_transition1(node, to, easing, duration, delay, cb)
|
||||||
|
one = true
|
||||||
|
end
|
||||||
|
local two = false
|
||||||
|
function dummy_transition2(node, to, easing, duration, delay, cb)
|
||||||
|
two = true
|
||||||
|
end
|
||||||
|
|
||||||
|
local node = gui.new_box_node(vmath.vector3(), vmath.vector3(100, 100, 0))
|
||||||
|
local duration = 2
|
||||||
|
local t = transitions.create(node)
|
||||||
|
t.show_in(dummy_transition1, easing.OUT, duration, delay or 0)
|
||||||
|
t.show_in(dummy_transition2, easing.OUT, duration, delay or 0)
|
||||||
|
t.handle(monarch.TRANSITION.SHOW_IN)
|
||||||
|
|
||||||
|
wait_timeout(function() return one or two end)
|
||||||
|
assert(two)
|
||||||
|
assert(not one)
|
||||||
|
end)
|
||||||
|
|
||||||
it("should replay and immediately finish on layout change", function()
|
it("should replay and immediately finish on layout change", function()
|
||||||
function dummy_transition(node, to, easing, duration, delay, cb)
|
function dummy_transition(node, to, easing, duration, delay, cb)
|
||||||
print("dummy transition")
|
print("dummy transition")
|
||||||
|
Reference in New Issue
Block a user