我目前正在开发一个 SceneKit 应用程序,最近在我的 iPhone 5s 上测试它时遇到了一个问题。
我写了下面的代码让一个块反复左右移动,一切正常。
SCNAction *mn1 = [SCNAction moveByX:-2.2 y:0 z:0 duration:1];
SCNAction *mn2 = [SCNAction moveByX:2.2 y:0 z:0 duration:1];
SCNAction *mn3 = [SCNAction waitForDuration:0.5];
SCNAction *mns = [SCNAction repeatActionForever:[SCNAction sequence:@[mn3,mn1,mn3,mn2]]];
[self.blueNode1 runAction:mns];
在 AppDelegate.m 中
- (void)applicationWillResignActive:(UIApplication *)application {
// Sent when the application is about to move from active to inactive state. This can occur for
certain types of temporary interruptions (such as an incoming phone call or SMS message) or when
the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame
rates. Games should use this method to pause the game.
SCNView *view = (SCNView *)self.window.rootViewController.view;
view.scene.paused = YES;
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
// Restart any tasks that were paused (or not yet started) while the application was inactive.
If the application was previously in the background, optionally refresh the user interface.
SCNView *view = (SCNView *)self.window.rootViewController.view;
view.scene.paused = NO;
}
当我通过主页按钮进入“后台/非活动模式”并返回我的应用程序时,一切仍然运行顺利。
当我通过电源按钮进入“背景”并等待几秒钟并返回我的应用程序时。blueNode1 会在一段时间内以非常快的速度反复运行动作。我离开应用程序的时间越长,当我返回应用程序时,块以极快的速度移动的时间就越长。我不确定为什么会发生这种情况,但它可能是一个破坏游戏的错误。
我希望我把我的问题说清楚了。任何帮助表示赞赏。
编辑:我刚刚创建了一个全新的测试应用程序,看看我是否可以在新项目中重新创建错误并且我能够做到。当我的 iPhone 通过我的 Mac 运行应用程序时,这似乎没有发生,但是,一旦我拔掉 iPhone 并通过它运行测试应用程序,我就能够在新项目上重新创建它。