我有两个功能:
local function first()
transition.to(ball, {x=100, y=200, time = 200}
end
local function stop()
if(score == 0)then
--stop the first function
end
end
如何在另一个功能中停止第一个功能?
答案 0 :(得分:2)
转换函数返回对转换的引用,稍后您可以将其传递给transition.cancel
以取消转换。
local currentTransition = nil
local function first()
currentTransition = transition.to(ball, {x=100, y=200, time = 200}
end
local function stop()
if (score == 0 and currentTransition ~= nil) then
transition.cancel(currentTransition)
end
end
更多详情为here
编辑 -
要在您实现的函数中手动处理此操作,您需要具有任何支持某种类型的取消检查的函数,以检查某些标志或状态以确定是否继续操作。这就是多线程应用程序现在支持取消的方式,您可以预先创建取消令牌并将其传递给执行长/密集工作的任何内容,并且该代码偶尔会检查该标志并在发生取消时停止。由于纯lua不支持多线程,这里有一个基本的,人为的例子:
local token = { cancelled = false }
local function bar(cancellationToken)
print("Hi, from bar!")
-- simulate user cancellation
cancellationToken.cancelled = true
end
local function foo(cancellationToken)
for i=0, 10 do
if (cancellationToken.cancelled) then
print("Cancelling operation...")
return
end
print(i)
bar(cancellationToken)
end
end
foo(token)