如何在 corona sdk 的另一个函数中停止一个函数
How to stop a function in another function in corona sdk
我有两个功能:
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
如何在另一个函数中停止第一个函数?
过渡函数 returns 对过渡的引用,您可以稍后将其传递给 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
编辑-
要在您实现的函数中手动处理此问题,您需要有任何函数支持对某些标志或状态进行某种类型的取消检查,以确定是否继续运行。这就是多线程应用程序现在支持取消的方式,您预先创建一个取消令牌并将其传递给任何正在做 long/intensive 工作的东西,并且该代码偶尔会检查标志并在发生取消时停止。由于 pure 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)
我有两个功能:
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
如何在另一个函数中停止第一个函数?
过渡函数 returns 对过渡的引用,您可以稍后将其传递给 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
编辑-
要在您实现的函数中手动处理此问题,您需要有任何函数支持对某些标志或状态进行某种类型的取消检查,以确定是否继续运行。这就是多线程应用程序现在支持取消的方式,您预先创建一个取消令牌并将其传递给任何正在做 long/intensive 工作的东西,并且该代码偶尔会检查标志并在发生取消时停止。由于 pure 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)