【问题标题】:Oncomplete its not working in my transitionOncomplete 它在我的过渡中不起作用
【发布时间】:2013-06-28 18:42:35
【问题描述】:

我有这个过渡。我想让块中“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 

【问题讨论】:

    标签: lua coronasdk corona-storyboard


    【解决方案1】:

    此代码将起作用

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

    它只会在没有您分配的时间的情况下触发该功能。 希望这会有所帮助

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 它不工作。我做了更改(我在问题中写下来),但它正在执行 removeself inmediatly。希望您能帮帮我,非常感谢!
        • 您修改后的代码仍会立即调用该函数,而不是让计时器调用该函数。但是我看到您已经获得了一个可以执行您想要的代码的 sn-p。我希望你能看到我现在试图指出的不同之处。
        【解决方案4】:

        这将起作用:

        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 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-05-11
          • 1970-01-01
          • 1970-01-01
          • 2012-08-09
          • 2014-05-29
          相关资源
          最近更新 更多