2017-07-03 47 views
0

其他功能的功能我有兩個功能:如何停止在電暈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 

如何停止的第一個函數在另一個函數?

回答

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) 
+0

如果不是過渡? –

+0

對於這一點,這取決於。它是你實現的函數還是api函數? –

+0

只是一個正常的功能,例如我做了一個重複更改背景色 –