我正在使用
CADisplayLink 以每秒60次的速度使用 EAGLView 方法在游戏中绘制帧。
当我调用 UIView animateWithDuration: 时,帧速率会减半,从60降至30 fps,持续时间为动画时间。一旦动画结束,fps会立即回升到60。
我还尝试使用 NSTimer 动画方法而非 CADisplayLink ,但结果相同。
在扬声器图标淡出时按音量按钮也会出现相同的行为,因此可能正在使用 animateWithDuration 。由于我想要在我的应用程序中平稳地处理扬声器图标,这意味着我不能只是重写我的动画代码以使用除 animateWithDuration 之外的其他方法,而是需要找到与其配合的解决方案。
我知道模拟器上有一个选项可以放慢调试中的动画速度,但我在设备上也遇到了这个问题,并且没有启用此类选项。我也尝试使用各种选项 animateWithDuration ,例如线性和用户互动,但都没有改善。
我也知道我可以设计一个引擎,可以使用大幅变化的帧速率。但是,对于游戏来说,高帧速率是理想的解决方式,这不是解决此问题的理想解决方案。
是否有人看到过这个问题或解决过它?