gpt4 book ai didi

ios - 跳跃的 CADisplayLink 动画

转载 作者:行者123 更新时间:2023-11-29 03:49:12 24 4
gpt4 key购买 nike

如上一篇文章 ( Here ) 中所述,我正在创建一个从初始角度开始并移动到结束角度的动画。我决定使用 CADisplayLink 来实现此动画,因为动画需要在用户输入期间尽可能快地运行,因此使用 CALayerCAKeyframeAnimation > 似乎实现这一目标太慢了。

实现调用 setNeedsDisplayCADisplayLink 后,我确实让动画正常工作,但它看起来真的很糟糕,因为它使 endAngle 和 initialAngle 之间的差异变得严重可见的角度 block ,而不是创建从一个角度到下一个角度的连续流。这是我当前的代码:

CGFloat newAngleToAnimate = animationProgress + ((endAngle-initialAngle)/kDrawDuration)*elapsedTime;

// Use newAngleToAnimate to draw in drawInContext

animationProgress = newAngleToAnimate; // Update the progress for the next frame.

此外,kDrawDuration 定义为 3.0f,因此我希望从 initialAngleendAngle 的动画需要 3.0 秒。我通过计算 2*M_PI/kNumAnglesInAnimation 将整个圆(2*M_PI 弧度)分成相等的段,并且最好我希望每帧对其中一个角度进行动画处理,但不知何故,我仍然必须考虑 kDrawDurationelapsedTime ,我只是不知道如何实现。

感谢您帮助解决此问题!

最佳答案

CGFloat newAngleToAnimate = animationProgress + ((endAngle-initialAngle)/kDrawDuration)*elapsedTime;

不要跟踪“animationProgress”。为了使动画正确,您所需要的 elapsedTime 就足够了。所以只需删除它并使用:

CGFloat newAngleToAnimate = ((endAngle-initialAngle)/kDrawDuration)*elapsedTime;

关于ios - 跳跃的 CADisplayLink 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17279839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com