我有一个包含多个图层(SKNodes)背景,游戏层,前景和hud的场景,每个场景中都有多个SKSpriteNodes用于滚动和可以收集和点击的对象。
hud图层只有一个SKSpriteNode(alpha颜色)和几个SKLabelNodes用于分数和级别,点击屏幕上的任何位置(小分数区域除外)导致即时触摸开始事件触发(fab)但是...在触摸开始之前,在底部的微小的hud评分区域中点击会引入延迟/延迟。
SKSpriteNode或标签是否可能会捕获touchesBegan事件或导致延迟?
我将创建一个简化的项目来测试这个并发布我的发现,但是如果这个问题/查询得到回答,我认为这可能对其他人有所帮助。感谢。
这是我问题中最接近的帖子,但我的应用代表中没有任何手势识别器。 Sprite Kit touchesbegan: delay/lag
答案 0 :(得分:1)
我尝试将得分面板(SKSpriteNode和标签)从屏幕底部移开,触摸它们不再产生延迟。 (所以不是他们!)
点击屏幕底部仍会造成延迟。
我可以确认LeanCocos2D建议控制中心导致延迟的现象。请参阅官方IOS7 UI指南中的摘录:
期望用户从屏幕底部向上滑动以显示 控制中心。如果iOS确定触摸开始于 屏幕下方应显示控制中心,它不提供 对当前正在运行的应用程序的手势。如果iOS确定了 触摸不应显示控制中心,触摸可能会略微 在到达应用之前延迟。
为了解决这个问题,因为我真的需要能够在屏幕底部点击快速响应的人在ViewController中包含以下代码:
- (BOOL) prefersStatusBarHidden
{
return YES;
}
我真的希望这会有所帮助。
答案 1 :(得分:1)
将其添加到AppDelegate的didFinishLaunchingWithOptions函数中:
for (UIGestureRecognizer* gesture in _window.gestureRecognizers)
{
gesture.delaysTouchesBegan=NO;
}
为我解决了屏幕底部的触摸延迟