我查看了文档但找不到任何内容。 是否可以创建自定义转换? 我必须模拟自定义缓和等投掷。 在cocos2d中,我能够创建一个自定义动作,带有电晕,我很困惑。
答案 0 :(得分:1)
文档对这个主题非常沉默。但是,如果你做了一些尝试,你会发现自定义缓动函数需要四个参数(从第五个参数开始只有nil
)。一些游戏显示自定义缓动函数如下所示:
function easer(currentTime, duration, startValue, targetDelta)
...
end
currentTime
/ duration
:duration
不言自明,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
,因此请在开头和结尾设置startValue
和startValue+targetDelta
。
但是你可以在开始和结束之间保持创造性,并且让函数来回反弹,例如,就像已经包含的一些缓动函数一样。
答案 1 :(得分:0)
答案是在文档中。
transition.to的一个参数是缓和,它可以是一个自定义函数。