Lua 如何在corona sdk中停止另一个函数中的函数
我有两个职能:Lua 如何在corona sdk中停止另一个函数中的函数,lua,coronasdk,Lua,Coronasdk,我有两个职能: 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 如何停止另一个函数中的第一个函数 转换函数返回对转换的引用,您可以稍后将其传递到转换。取消以取消转换 local currentTransitio
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
如何停止另一个函数中的第一个函数 转换函数返回对转换的引用,您可以稍后将其传递到
转换。取消以取消转换
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
更多详情请参阅
编辑-
要在您实现的函数中手动处理此问题,您需要有任何函数支持对某些标志或状态进行某种类型的取消检查,以确定是否继续操作。这就是多线程应用程序支持取消的方式。现在,您可以预先创建一个取消令牌,并将其传递给进行长时间/高强度工作的任何人,该代码偶尔会检查标志,并在发生取消时停止。由于纯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)
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
更多详情请参阅
编辑-
要在您实现的函数中手动处理此问题,您需要有任何函数支持对某些标志或状态进行某种类型的取消检查,以确定是否继续操作。这就是多线程应用程序支持取消的方式。现在,您可以预先创建一个取消令牌,并将其传递给进行长时间/高强度工作的任何人,该代码偶尔会检查标志,并在发生取消时停止。由于纯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)
如果这不是一个过渡呢?这要看情况而定。它是您实现的函数还是api函数?只是一个普通函数,例如,我制作了一个改变背景颜色的函数repeatedly@Mr.E添加了一些关于如何手动添加取消支持的注释。如果这不是一个转换,该怎么办?这取决于。它是您实现的函数还是api函数?只是一个普通函数,例如,我制作了一个改变背景颜色的函数repeatedly@Mr.E添加了一些关于如何手动添加取消支持的注释。