我觉得这很傻,但我似乎忘记了如何有效地使用正弦。
我正在使用iPad应用程序,所以我在ObjectiveC中,而我只是想让UIView慢慢振荡。只使用position.y + sin(计数器)使它移动得如此之快,它会振动,我似乎无法定义减慢它的时间。
我发现了一些代码示例(主要用于生成声波),它们都将很多东西组合成一行代码,我不能轻易将它分开。任何人都可以解释一下我应该做些什么吗?
答案 0 :(得分:2)
sin(和cos)在Radians中获取一个参数。名称counter
表示您没有使用Radians。
因此,您需要确定您想要的每秒振荡次数。然后,您可以测量最后一个和当前动画“帧”之间的时间。整波是2PI弧度,所以
Y = sin(2PI * Time * OccilationsPerSecond) * Amplitude.
答案 1 :(得分:1)
你需要这样的公式:
x(t) = (x_max) sin(2*pi*frequency*t)
其中
pi = 3.14159....
frequency = 1/period
t = time
x_max = maximum amplitude in the x-direction
如果你想要在y方向上振荡,你需要另一个功能。
答案 2 :(得分:0)
虽然不是您所追求的答案,但如果速度过快,您可以简单地减少调用计时器的时间。 (也就是说,您也可以设置CABasicAnimation的持续时间 - 可能是一个更好的方法,因为iOS为您处理动画,可以自动反转到初始设置,可以设置为循环'n'次等等。)
那就是说,希望其他人能提供你所追求的东西。