我最近开始开发我的第一个iPhone应用程序,它将是一个2D游戏.到目前为止,一切进展顺利,项目已包含超过一千行代码.
但是,我刚刚陷入了一个小问题.与许多游戏一样,需要暂停它.我的第一个尝试就是在代码中使用它,暂停必须发生.
self.view.paused = true;
Run Code Online (Sandbox Code Playgroud)
工作正常,直到我需要一些动画发生后,有人按下暂停按钮.想象一下,一个新的精灵节点从屏幕底部向上滑动,其中包含有关当前分数的一些细节,等等.当然,使用上面的代码将停止所有动画.
我的新想法是简单地停止必须单独停止的所有节点.我通过使用这段代码得到了它.
[self enumerateChildNodesWithName:@"name" usingBlock:^(SKNode* node, BOOL* stop) {
node.paused = true;
node.speed = 0.0;
}];
Run Code Online (Sandbox Code Playgroud)
尝试了几次,当我遇到另一个问题时,我终于找到了解决方案.需要停止的一些游戏精灵节点在一定时间后定期创建.以下代码负责此行为.
SKAction* createPeriodically = [SKAction repeatActionForever:[SKAction sequence:@[[SKAction performSelector:@selector(create) onTarget:self],[SKAction waitForDuration:15.0]]]];
[self runAction:createPeriodically];
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我正在使用waitForDuration在创建精灵节点之间有一个延迟.现在,当我暂停所有节点时,时间仍然继续,因此waitForDuration在设定的时间量之后完成,并且正在创建精灵节点,尽管所有其他节点都已暂停且未移动.
我希望你们能够理解我的问题.我正在寻找一种暂停机制来定期创建精灵节点的方法,同时仍能够在之后创建新的精灵节点并对新节点执行操作.任何帮助表示赞赏.谢谢.