2013-06-28 3 views
1

У меня этот переход. Я хочу сделать изображение, находящееся в блоке в позиции «desplazar», исчезнуть, а затем удалить его.Oncomplete его не работает в моем переходе

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 и я думаю, что изображение собирается в исчезает, когда переход будет завершен, и я поставил задержку в функции, но это `ы не работает ,

Надеется, что вы можете помочь мне

Благодаря

Я сделал это так же

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

это просто вызовет функцию с t время, которое вы назначили. надеюсь, что это поможет

0

Вы передаете результат вызова borrado(desplazar) к timer.performWithDelay. Вам необходимо передать функцию executeWithDelay, которая вызовет borrado(desplazar), когда таймер вызывает переданную функцию.

+0

Не работает. Я сделал изменение (я записываю его в вопросе), но он выполняет удаление самостоятельно. Надеюсь, вы можете мне помочь, спасибо вам большое! –

+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(), чтобы немного задержать удаление.