Tag: 触动移动

touchesMoved不定期地调用

我正在制作一款iOS游戏,主要是在屏幕上拖动大对象。 当我在实际的iPad / iPhone上运行游戏一段时间(持续在屏幕上拖动对象的圆圈)时,每隔5分钟左右拖动的对象就会全部结束约10-30秒 。 然后,它回到丝绸般光滑。 从表面上看,游戏的帧速率似乎下降到了15fps,但事实上,它一直在以60fps的速度运行。 不过,我注意到唯一不顺畅的是被拖动的对象 ,而游戏的其余部分都运行得非常顺利。 这让我相信口吃与iOS中的触摸input有关。 所以我开始看touchesMoved,看到它通常每16毫秒调用一次(所以触摸input以60 fps运行)。 到现在为止还挺好。 然后我注意到, 当对象开始口吃时,touchesMoved开始以奇怪的时间间隔被调用,在8毫秒和50毫秒之间波动很大。 所以,当触摸屏处于这种奇怪的状态时,有时touchesMoved会在前一次调用后的8毫秒内被调用,有时直到前一次调用后的50毫秒才会被调用。 当然,这使得被拖动的对象看起来全是断断续续的,因为它的位置是以不规则的间隔更新的。 你有什么想法是什么可能造成触摸移动停止被定期调用,如通常一样? 奖金: – 每当我倾斜屏幕强制屏幕方向改变时,大约70%的时间触摸屏进入上述状态touchesMoved开始被不规则地调用。 然后在10-20秒后恢复正常,再次看起来平滑。 – 我已经在两台iPad和两台iPhone(iOS 6和7)上试过了,这个问题出现在所有这些设备上。 – 使用OpenGLES视图来显示graphics。 它使用CADisplayLink同步到显示刷新率。 – 我用来testing这个的Xcode项目已经由unity3d游戏开发工具生成,但是我发现了几个非统一的游戏出现了相同的问题。 这似乎是一个全系统的问题。 注意我使用CFAbsoluteTimeGetCurrent测量objective-c中的CFAbsoluteTimeGetCurrent ,完全在统一之外。