2013-07-01 56 views
1

我對於corona sdk中的程序流程非常困惑。lua/corona sdk代碼中的流程問題

我想要做的是流程在轉換結束時繼續,我知道我可以使用Oncomplete,但在這種情況下我不知道如何使用它。

我有這樣的代碼:

while ban == 2 do 
    actual = x 
    desplazar = x 
    while actual >= 0 do 
     actual = actual - 4 
     if inTable(t,actual) then 
      while inTable(t,actual) and actual >=0 do 
       actual= actual - 4 
      end 
     end  
    if actual >= 0 then 
     banaux=1 
     if inTable(t, desplazar) then 
      block[desplazar].value=0 
      block[desplazar]:removeSelf() 
      for z=1, tablelength(t) do 
        if t[z] == desplazar then 
        t[z]=32 
      end 
     end 
    end 
    transition.to(block[actual], {time=velocity, x=block[desplazar].x, y=block[desplazar].y}) 
    cambiodesp(actual,desplazar) 
    desplazar = desplazar - 4 
    end   
end 
x = x -1 
if inTable(t,x) then 
else 
    ban = 1  
end  
end 

我得到了很多意想不到的結果,因爲過渡的,我假定代碼保持運行雖然過渡還沒有完成,我想做出點用於在轉換完成時運行上述代碼,但我認爲我無法使用oncomplete。

我要讓保持運行時,這是完全

transition.to(block[actual], {time=velocity, x=block[desplazar].x, y=block[desplazar].y}) 

我不理解如何代碼的流程工作,所以希望你能向我解釋說

回答

0

也許你可以使用這個技巧,但我不推薦這個。因爲它可能會阻止運行時間。我建議你寫功能。所以,你可以使用的onComplete方法正確

不管怎麼說,這裏是不好的,但快速的方法來解決這個問題:

while ban == 2 do 
    actual = x 
    desplazar = x 
    while actual >= 0 do 
     actual = actual - 4 
     if inTable(t,actual) then 
      while inTable(t,actual) and actual >=0 do 
       actual= actual - 4 
      end 
     end  
    if actual >= 0 then 
     banaux=1 
     if inTable(t, desplazar) then 
      block[desplazar].value=0 
      block[desplazar]:removeSelf() 
      for z=1, tablelength(t) do 
        if t[z] == desplazar then 
        t[z]=32 
      end 
     end 
    end 
    local isEnded = false 
    transition.to(block[actual], {time=velocity, x=block[desplazar].x, y=block[desplazar].y, onComplete = function() isEnded = true end }) 
    while isEnded == false then end 
    cambiodesp(actual,desplazar) 
    desplazar = desplazar - 4 
    end   
end 
x = x -1 
if inTable(t,x) then 
else 
    ban = 1  
end  
end