如何在 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)