Oncomplete在我过渡中没有工作。

我有这个转换。我想让出现在“desplazar”位置的图像消失,然后删除它。

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

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

但是它不起作用,图像立即消失,我认为图像将在转换完成时消失,而且我在函数中设置了延迟,但它不起作用。

希望你能帮我

谢谢

我也这样做了。

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

local function intime()
    print ("intime")
    borrado(desplazar)
end
点赞
用户258523
用户258523

你正在将调用borrado(desplazar)的结果传递给timer.performWithDelay。你需要传递一个函数给performWithDelay,当计时器调用传递的函数时,它将调用borrado(desplazar)

2013-06-28 19:42:32
用户1502079
用户1502079

这将可行:

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
2013-06-28 22:10:33
用户1682268
用户1682268
这段代码将会运行:
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})


记得当使用 transition 和 timer 时,不要只是调用带一个参数的函数,因为你不会达到所需要的时间来触发它,就像这样:

timer.performWithDelay(12000, borrado(desplazar))

```

它会在没有你设置的时间之前就触发函数。希望这可以帮到你。

2013-06-28 22:53:42
用户1870706
用户1870706

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()中放置一个计时器稍微延迟删除。

2013-07-01 00:24:44