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 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]
|
||||
-- find if there's already a transition for the node in
|
||||
-- question and if so update it instead of creating a new
|
||||
-- transition
|
||||
for _,transition in ipairs(t) do
|
||||
for _,transition in ipairs(t.transitions) do
|
||||
if transition.node == node then
|
||||
transition.fn = fn
|
||||
transition.easing = easing
|
||||
|
@@ -8,6 +8,12 @@ local easing = require "monarch.transitions.easings"
|
||||
|
||||
return function()
|
||||
|
||||
local function wait_timeout(fn, ...)
|
||||
local args = { ... }
|
||||
cowait(function() return fn(unpack(args)) end, 5)
|
||||
return fn(...)
|
||||
end
|
||||
|
||||
describe("transitions", function()
|
||||
before(function()
|
||||
mock_msg.mock()
|
||||
@@ -22,6 +28,28 @@ describe("transitions", function()
|
||||
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()
|
||||
function dummy_transition(node, to, easing, duration, delay, cb)
|
||||
print("dummy transition")
|
||||
|
Reference in New Issue
Block a user