如何让一些过渡效果一个接一个地播放。

我目前正试图让一些过渡效果一个接一个地进行,但我无法想出一种方法来在同一个函数中让许多过渡效果一个接一个地工作。我目前的方法(如下所示)虽然可以作用,但我讨厌它的混乱程度。

function screenLowering()
  local start = transition.to(backdrop,{time = 1000, x = centerX, y = height/2, onComplete = screenBounce})
end

function screenBounce()
  local bounce = transition.to(backdrop,{time = 250, x = centerX, y = backdrop.y - 50, onComplete = screenBounce2})
end

function screenBounce2()
  local bounce = transition.to(backdrop,{time = 300, x = centerX, y = backdrop.y + 50})
end
点赞
用户1847592
用户1847592
```lua
function chain_of_transitions(object, params, ...)
   if params then
      if params.dx then
         params.x, params.dx = object.x + params.dx
      end
      if params.dy then
         params.y, params.dy = object.y + params.dy
      end
      function params.onComplete()
         chain_of_transitions(object, ...)
      end
      transition.to(backdrop, params)
   end
end

chain_of_transitions(backdrop,
   {time = 1000, x = centerX, y  = height/2},
   {time = 250,  x = centerX, dy = -50},
   {time = 300,  x = centerX, dy = 50}
)

chain_of_transitions 函数接收一个对象 object 和一系列参数 params...。如果有多个参数,则递归调用该函数,并将所有参数依次传递下去。对于每个参数 params,如果它包含属性 dx 则将 params.x 设置为 object.x + params.dx,如果它包含属性 dy 则将 params.y 设置为 object.y + params.dy,并在结束时调用 params.onComplete 函数(如果存在)。最后,将 params 传递给 transition.to 函数,以将属性变化应用于 backdrop 对象。

在示例中,函数被调用了一次,传递了三个不同的参数对象。在第一个参数中,将 backdrop 对象移动到屏幕中心,高度为屏幕高度的一半,所需时间为 1000 毫秒。对于第二个和第三个参数,将 backdrop 对象在 x 轴上移动到屏幕中心,分别向上和向下移动 50 个像素,并分别需要 250 和 300 毫秒的时间。

2015-10-25 17:00:10