在Corona SDK中创建自定义过渡

时间:2011-12-09 17:46:56

标签: transition corona

我查看了文档但找不到任何内容。 是否可以创建自定义转换? 我必须模拟自定义缓和等投掷。 在cocos2d中,我能够创建一个自定义动作,带有电晕,我很困惑。

2 个答案:

答案 0 :(得分:1)

文档对这个主题非常沉默。但是,如果你做了一些尝试,你会发现自定义缓动函数需要四个参数(从第五个参数开始只有nil)。一些游戏显示自定义缓动函数如下所示:

function easer(currentTime, duration, startValue, targetDelta)
    ...
end

说明

  • currentTime / durationduration不言自明,currentTime在转换过程中只是[0..duration]
  • startValue:过渡开始时的值的快照。
  • targetDelta:这是目标值的值,减去startValue,即缓和功能"必须走的距离"

带注释的示例

假设您有以下代码:

foo.frob = 1
transition.to(foo, {time=1001, frob=0.25})

即,您想要转换foo.frob [1..0.25]。然后:

function easer(currentTime, duration, startValue, targetDelta)
    -- currentTime:  [0..1001]
    -- duration:     1001
    -- startValue:   1
    -- targetDelta:  to-from = 0.25-1 = -0.75

    return startValue + (currentTime/duration) * targetDelta -- a linear interpolator
end

返回值

返回值的开头应为startValue,最后应为startValue+targetDelta。完全允许离开那个范围;但是,一旦转换停止,它会自动变为startValue+targetDelta,因此请在开头和结尾设置startValuestartValue+targetDelta

但是你可以在开始和结束之间保持创造性,并且让函数来回反弹,例如,就像已经包含的一些缓动函数一样。

答案 1 :(得分:0)

答案是在文档中。

transition.to的一个参数是缓和,它可以是一个自定义函数。