• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 通过更改 CGPoint 设置动画

[复制链接]
菜鸟教程小白 发表于 2022-12-12 21:29:40 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

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

我考虑过但放弃的方法:

  1. Core Animation:我使用 OpenGL 来绘制,所以 Core Animation 似乎没有帮助。

  2. NSTimer:这并没有给我贝塞尔曲线的灵 active ,而且看起来很手动。

  3. 基于给定帧率的心跳:我只需要在点变化时重新渲染,而且大部分时间它是静止的。感觉心跳不是正确的方法。

是否存在如我所描述的那样?我必须自己写吗?还是我只是误解了为我提供的工具,这表明我应该再看看我是如何绘制图形的?



Best Answer-推荐答案


我同意另一张海报。假设你可以使用 iOS 5,你应该使用 GLKView 和 GLKViewController。设置为每次屏幕刷新调用一次(在内部使用 CADisplayLink。)如果您不想只使用 iOS 5,则可以自己设置 CADisplayLink。

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

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

就缓入/缓出时间而言,您也可以自己做。您需要阅读动画时间。它使用输入时间到输出时间的非线性映射,使用贝塞尔曲线在开始和结束时改变曲线的形状。

关于ios - 通过更改 CGPoint 设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11060796/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap