【问题标题】:How to stop a function in another function in corona sdk如何在 corona sdk 的另一个函数中停止一个函数
【发布时间】:2017-07-05 21:29:38
【问题描述】:

我有两个功能:

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

如何在另一个函数中停止第一个函数?

【问题讨论】:

    标签: lua coronasdk


    【解决方案1】:

    转换函数返回对转换的引用,您可以稍后将其传递给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)
    

    【讨论】:

    • 如果不是过渡怎么办?
    • 为此,这取决于。是你实现的函数还是api函数?
    • 只是一个普通的功能,比如我做了一个反复改变背景颜色的功能
    • @Mr.E 添加了一些关于如何手动添加取消支持的注释。
    猜你喜欢
    • 1970-01-01
    • 2014-07-14
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多