菜鸟教程小白 发表于 2022-12-12 21:29:40

ios - 通过更改 CGPoint 设置动画


                                            <p><p>在我的 iOS 应用程序中,我根据给定点(由 <code>CGPoint</code> 指定)进行大量三角计算,然后根据这些计算创建一些转换矩阵,最终用于 OpenGL 绘图(通过 <code>GLKit</code>)。我想通过随着时间的推移更改基本 <code>CGPoint</code> 来创建动画,但我不确定我应该为动画使用什么方法。</p>

<p>我真正在寻找的是一个 API,它允许我指定在每次迭代时调用的函数,就像 <code>NSTimer</code> 所做的那样,但如果我能接受它会非常酷优势缓入/缓出等。每次迭代需要修改的唯一数据是我的主<code>CGPoint</code>,其余的渲染可以从中确定。</p>

<p>我考虑过但放弃的方法:</p>

<ol>
<li><p>Core Animation:我使用 OpenGL 来绘制,所以 Core Animation 似乎没有帮助。</p></li>
<li><p><code>NSTimer</code>:这并没有给我贝塞尔曲线的灵 active ,而且看起来很手动。</p></li>
<li><p>基于给定帧率的心跳:我只需要在点变化时重新渲染,而且大部分时间它是静止的。感觉心跳不是正确的方法。</p></li>
</ol>

<p>是否存在如我所描述的那样?我必须自己写吗?还是我只是误解了为我提供的工具,这表明我应该再看看我是如何绘制图形的?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我同意另一张海报。假设你可以使用 iOS 5,你应该使用 GLKView 和 GLKViewController。设置为每次屏幕刷新调用一次(在内部使用 CADisplayLink。)如果您不想只使用 iOS 5,则可以自己设置 CADisplayLink。</p>

<p>核心动画对于 OpenGL 渲染没有用处。但是,您可以使用 Core Animation 的设计来驱动您的设计。核心动画(就像 Cocoa 的其余部分一样)构建在 OpenGL 之上,因此您可以自己完成 CA 所做的一切。它只需要工作。 (有时工作量很大。)</p>

<p>Core Animation 使用基于运动的动画模型,而不是基于帧的动画模型。每次渲染场景时,它都会根据动画开始后耗时来决定应该应用多少运动。如果它在渲染帧中落后,则下一帧会移动得更远,因此随着时间的推移运动是一致的。</p>

<p>就缓入/缓出时间而言,您也可以自己做。您需要阅读动画时间。它使用输入时间到输出时间的非线性映射,使用贝塞尔曲线在开始和结束时改变曲线的形状。 </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 通过更改 CGPoint 设置动画,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/11060796/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/11060796/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 通过更改 CGPoint 设置动画