Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 如何在corona sdk中停止另一个函数中的函数_Lua_Coronasdk - Fatal编程技术网

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添加了一些关于如何手动添加取消支持的注释。