【发布时间】:2013-11-22 19:45:50
【问题描述】:
我有一个标准的 UIViewController (TestViewController),在这个控制器的 viewWillLayoutSubviews 方法中,我实例化了一个新的 SKView 子类 (TestView) 并添加它作为控制器视图的子视图。此外,我添加了一些按钮,这些按钮旨在让用户控制 SKScene 子类 (TestScene) 中的操作。 TestScene 在 TestView 上的 init 方法中实例化。在 TestView 作为子视图添加到 TestViewController 的 视图之后,我还立即调用 [testView presentScene] 这是 TestView 简单地调用 [self presentScene: testScene]。
按下 TestViewController 上提到的按钮意味着调用 TestScene 上的一个方法(通过 TestView),该方法将实例化一个新的 SKSpriteNode 子类( TestSpriteNode) 并将其作为子节点添加到场景中。这确实有效,但我的问题是,对于要添加的第一个 TestSpriteNode,TestScene 呈现新的精灵会间歇性地长时间延迟。有时它可以完美运行,但大多数情况下它会卡住,多次触摸按钮后会同时出现多个精灵,之后一切正常。我应该提到这个问题发生在模拟器和我的设备上。
我尝试在 TestScene 的中添加一个新的 TestSpriteNode -(void)didMoveToView:(SKView*)view 导致 TestSpriteNode 立即出现,然后在按下按钮以添加新的 TestSpriteNode 时出现延迟。通过在 TestScene 上按下按钮调用的方法添加断点,我可以看到它被立即调用,但添加的 TestSpriteNode 没有立即呈现。
如果已经有解决动态添加的 SKSpriteNodes 渲染延迟的答案,我提前道歉,我无法找到它。关于将新的 SKSpriteNodes 添加到 SKScene,我有什么误解吗?
【问题讨论】:
-
我在link 找到了我的问题的解决方案。为不同的屏幕制作新的 SKScene 而不是新的 UIViewController 可以解决问题
标签: objective-c sprite-kit skspritenode skview skscene