如何在电晕sdk中停止另一个功能的功能

时间:2017-07-03 13:18:11

标签: lua corona

我有两个功能:

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

如何在另一个功能中停止第一个功能?

1 个答案:

答案 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)