2

我正在尝试将 cocos2D 图层对象与地图同步,我设法通过将 glView 调整为 MKMapView 的 visibleMapRect 来使其工作。我可以缩放、移动,我的对象跟随地图。但是,MKMapView 和 cocos2D 层之间存在一个小而烦人的延迟。

我在每个显示循环中同步它。

方法:

1) 检索 MKMapView.visibleMapRect

2)设置glViewPort

3) 进行正交投影以将我的图层调整为 MapView。

我已经尝试过其他方法,比如用触摸移动 cocos2D 层,然后根据触摸移动我的地图坐标,仍然滞后。

即使禁用 MapView 的加速和减速也不会消除滞后。

谢谢。

4

1 回答 1

0

在黑暗中射击:我们知道 iOS 设备在缩放时使用优化来加速渲染。这对于 Safari 浏览器来说是正确的,当您放大时,实际上只放大了当前显示为浏览器窗口内容的图像。只有在您停止捏合动作后,设备才会更新视图。

您会在旧设备上通过文本特别看到这一点。当设备以新的比例因子重新渲染内容时,文本突然又变得清晰明了。我相信在 MKMapView 中进行了相同的优化。

您可能想要检查 visibleMapRect 值是否在缩放期间实际更新,以及它们是否准确反映当前缩放级别。

我可以想象的另一个问题是 MKMapView + Cocos2D 的帧率很低。特别是缩放可能会消耗大量 CPU 资源。您可能希望启用 cocos2d FPS 显示以查看帧速率。

允许在 cocos2d 中平滑滚动视图(尤其是 UITableView 等复杂视图)所必需的另一个技巧是降低 cocos2d 的最大帧率(animationInterval)和/或在单独的线程上运行 gl 视图的渲染。您的问题可能只是此问题的变体:UIScrollView pauses NSTimer until scrolling finished

请注意,DisplayLink 控制器也会发生这种情况。这个问题中的信息对我有用。

于 2012-08-08T12:20:17.687 回答