我想将cocos2D图层对象与地图同步,我设法通过将glView调整为MKMapView的visibleMapRect来使其工作。我可以缩放,移动,我的对象跟随地图。但是,MKMapView和cocos2D层之间存在一个小而烦人的延迟。
我正在每个显示循环同步它。
方法:
1)检索MKMapView.visibleMapRect
2)设置glViewPort
3)进行正交投影以将我的图层调整为MapView。
我已经尝试了其他方法,比如用触摸移动cocos2D图层,然后根据触摸移动地图的坐标,仍然是滞后的。
即使禁用MapView的加速和减速也不会消除延迟。
感谢。
答案 0 :(得分:0)
在黑暗中拍摄:我们知道iOS设备在扩展时使用优化来加速渲染。这适用于Safari浏览器,当您放大时,实际上只放大当前显示为浏览器窗口内容的图像。只有在停止捏动后,设备才会更新视图。
您将在旧设备上专门看到此文字。当设备使用新比例因子重新呈现内容时,文本突然变得清晰锐利。我相信在MKMapView中完成相同的优化。
您可能想要检查缩放期间是否实际更新了visibleMapRect值,以及它们是否准确反映了当前的缩放级别。
我能想到的另一个问题是MKMapView + Cocos2D的帧速率很低。特别是缩放可能会消耗大量的CPU能量。您可能希望启用cocos2d FPS显示以查看帧速率是什么。
允许在cocos2d中平滑滚动视图(尤其是像UITableView这样的复杂视图)的另一个技巧是减少cocos2d的最大帧速率(animationInterval)和/或在单独的线程上运行gl视图的渲染。您的问题可能仅仅是此问题的变体:UIScrollView pauses NSTimer until scrolling finishes
请注意,DisplayLink Director也会出现这种情况。 this question中的信息对我有用。