timer.performWithDelay 中的可变延迟时间
Variable delay time in timer.performWithDelay
我需要在 Corona SDK 中调用具有可变延迟的函数。我正在尝试创建一个函数,该函数将执行一段代码,该代码块检查 timer.performWithDelay 函数是否应继续循环,并在条件正确时将其切断。但是,该代码不相关。我只需要有一个延迟函数调用循环,其延迟时间可能会有所不同。现在,我正在使用以下代码:
time = 500
local function foo( time )
print( time )
end
timer.performWithDelay( time, function()
time = time + 100
foo( time )
end, 10 )
显然,这是行不通的。我认为幕后发生的事情是 timer.performWithDelay 只查看变量时间一次,并在其存在的其余时间使用它。有没有人有任何技术可以在这种情况下允许可变时间延迟?
编辑:应用说明: 我在骨骼动画模块中使用这个函数。当我播放一系列帧时,我需要能够随心所欲地暂停、恢复或取消剪辑,所以我需要一个延迟函数调用循环,每个调用都用一组 transition.to 来电。 这意味着循环也必须能够暂停、恢复和取消, 这就是为什么我想在使用剪辑中的帧数时使用 timer.performWithDelay循环数。我在下面列出了一个伪代码。
伪代码:
local flag = false
function loop( clip, object )
for i = 1, number_frames_in_clip do
timer.performWithDelay( duration_of_last_frame + time_elapsed, animate_object() )
if flag == true then
pause_loop() <-- The real issue lies in pausing the loop
end
end
end
function pause( object )
for i = 1, number_in_object.transitionTable do
transition.pause( object.transitionTable[i] )
end
flag = true
end
你不能用一个计时器来完成,但你可以这样做
local time = 500
local iterations = 1;
local currentTimer = nil;
local function PrintTime()
time = time + 100
iterations = iterations + 1
print(time);
if (iterations <= 10) then
currentTimer = timer.performWithDelay(time, PrintTime);
end
end
currentTimer = timer.performWithDelay(time, PrintTime);
以及任何时候你想暂停通话
if (currentTimer) then
timer.pause(currentTimer);
end
编辑:代码
我需要在 Corona SDK 中调用具有可变延迟的函数。我正在尝试创建一个函数,该函数将执行一段代码,该代码块检查 timer.performWithDelay 函数是否应继续循环,并在条件正确时将其切断。但是,该代码不相关。我只需要有一个延迟函数调用循环,其延迟时间可能会有所不同。现在,我正在使用以下代码:
time = 500
local function foo( time )
print( time )
end
timer.performWithDelay( time, function()
time = time + 100
foo( time )
end, 10 )
显然,这是行不通的。我认为幕后发生的事情是 timer.performWithDelay 只查看变量时间一次,并在其存在的其余时间使用它。有没有人有任何技术可以在这种情况下允许可变时间延迟?
编辑:应用说明: 我在骨骼动画模块中使用这个函数。当我播放一系列帧时,我需要能够随心所欲地暂停、恢复或取消剪辑,所以我需要一个延迟函数调用循环,每个调用都用一组 transition.to 来电。 这意味着循环也必须能够暂停、恢复和取消, 这就是为什么我想在使用剪辑中的帧数时使用 timer.performWithDelay循环数。我在下面列出了一个伪代码。
伪代码:
local flag = false
function loop( clip, object )
for i = 1, number_frames_in_clip do
timer.performWithDelay( duration_of_last_frame + time_elapsed, animate_object() )
if flag == true then
pause_loop() <-- The real issue lies in pausing the loop
end
end
end
function pause( object )
for i = 1, number_in_object.transitionTable do
transition.pause( object.transitionTable[i] )
end
flag = true
end
你不能用一个计时器来完成,但你可以这样做
local time = 500
local iterations = 1;
local currentTimer = nil;
local function PrintTime()
time = time + 100
iterations = iterations + 1
print(time);
if (iterations <= 10) then
currentTimer = timer.performWithDelay(time, PrintTime);
end
end
currentTimer = timer.performWithDelay(time, PrintTime);
以及任何时候你想暂停通话
if (currentTimer) then
timer.pause(currentTimer);
end
编辑:代码