2013-06-28 17 views
1

我有這種轉變。我想將位於「desplazar」位置的塊中的圖像消失並刪除。完成其在我的轉換不工作

transition.to(block[desplazar], {time=14000, alpha=0, onComplete=timer.performWithDelay(12000, borrado(desplazar),1) }) 

local function borrado(desplazar) 
    block[desplazar]:removeSelf() 
end  

但i'ts不工作時,圖像inmediatly dissapearing,我認爲圖像是要到dissapear當轉換完成後,還我已經把延遲的功能,但它`不工作。

希望你能幫助我

感謝

我做了這樣還

transition.to(block[desplazar], {time=14000, alpha=0, onComplete=timer.performWithDelay(12000, intime(),1) }) 

local function intime() 
    print ("intime") 
    borrado(desplazar) 
end 

回答

3

這個代碼將工作

local function borrado(desplazar) 
     block[desplazar]:removeSelf() 
    end 


transition.to(block[desplazar], {time=14000, alpha=0, onComplete = timer.performWithDelay(12000, function() borrado(desplazar) end),1}) 

使用過渡和定時器不只是調用函數的參數,因爲你將無法實現的時候只記得你想讓它觸發就像這樣

timer.performWithDelay(12000, borrado(desplazar)) 

它只會觸發該功能你分配的時間。 希望這有助於

0

你傳入呼叫borrado(desplazar)到timer.performWithDelay的結果。您需要傳遞一個函數來執行延遲延遲,當計時器調用傳遞的函數時它將調用borrado(desplazar)

+0

它不工作。我做了改變(我在問題中寫下了它),但是它正在執行removeselflymedimedily。我希望你能幫助我,非常感謝你! –

+0

您的修改代碼仍然立即調用該函數,而不是讓計時器調用該函數。但是我看到你已經得到了一些你想要的代碼片段。我希望你看到我現在想指出的差異。 –

0

這將工作:

transition.to(block[desplazar], {time=14000, alpha=0, onComplete=function() 
    timer.performWithDelay(12000, borrado(desplazar),1) 
end }) 

local function borrado(desplazar) 
    block[desplazar]:removeSelf() 
end 
1

Corona SDK onComplete參數期望函數作爲參數,而不是函數調用的結果。您不能直接調用另一個函數,如:

onComplete = timer.performWithDelay(12000....) 

示例。

的最好方法是創建一個功能,你想要做的時候完全做的工作:

local function handleOnComplete(target) 
    target:removeSelf() 
    target = nil 
end 
transition.to(block[desplazar], {time=14000, alpha=0, onComplete=handleOnComplete }) 

的handleOnComplete得到傳遞給它一個參數,它是被轉換的對象。我不明白爲什麼你要在轉換完成後再等待12秒才能真正刪除它。如果這很重要,你可以在handleOnComplete()中放一個定時器來延遲刪除。