将ScrollView与SpriteKit一起使用时随机停顿

时间:2014-03-15 15:06:03

标签: ios iphone objective-c uiscrollview sprite-kit

滚动时我遇到了研究/滞后。

iPhone 5s上很少出现在iPhone5上。 它只会在您按住手指时出现,而不是在滚动视图减速时出现。 它似乎非常随机,但一旦它开始滞后,它总会持续一段时间。

它可以通过跳到主屏幕并再次返回几次来触发(有时它可以工作一段时间,有时候这种研究会一直显示出来)。正如我所说,它正在随机发生,如果您尝试这个示例项目并且没有看到任何研究,请耐心等待并尝试更多。

示例项目基于SpriteKit游戏模板,我尝试对其进行尽可能少的更改,以便更容易调试。

示例项目:https://github.com/bobmoff/ScrollStudderingExample

我与Apple支持有关此事,但到目前为止他们只提到他们会将它发送给在SpriteKit上工作的技术人员并回复我。

我一直在努力解决这个问题可能已经有一年了,所以如果有人想出一个真正的解决方案来解决这个问题的原因,我会高兴地哭泣。

1 个答案:

答案 0 :(得分:0)

这只是一个想法:您是否尝试将scrollViewDidScroll方法与动画解耦? (比如"去抖动"在Javacript滚动事件。)

我现在无法对它进行测试,并不是说这是一种很好的做法,但我很好奇这是否解决了这个问题...


抽象示例:

某处的全局变量:

CGPoint globalVar;


在ViewController中:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {

    globalVar = scrollView.contentOffset;
}


在SKScene:

-(void)update:(CFTimeInterval)currentTime {

     spriteToScroll.position = globalVar;
}