gpt4 book ai didi

ios - SKNode runAction 滞后 :completion: in recursive method

转载 作者:行者123 更新时间:2023-11-28 22:11:58 25 4
gpt4 key购买 nike

请考虑以下递归:

- (void)addFlashActionToLampWithLampIndex:(int)index {
LampNode *lamp = (LampNode *)self.children[index];
int nextLampIndex = index + 1;
if (nextLampIndex > self.children.count - 1) {
nextLampIndex = 0;
}

SKAction *flash = [SKAction runBlock:^{
NSLog(@"2");
}];
// SKAction *wait = [SKAction waitForDuration:0.015f];

NSLog(@"1");
[self runAction:flash completion:^{
[self addFlashActionToLampWithLampIndex:nextLampIndex];
}];
}

输出:

2014-03-27 20:51:21.104 SpinNWin[15811:60b] 1
2014-03-27 20:51:21.110 SpinNWin[15811:60b] 2
2014-03-27 20:51:21.110 SpinNWin[15811:60b] 1
2014-03-27 20:51:21.143 SpinNWin[15811:60b] 2
2014-03-27 20:51:21.144 SpinNWin[15811:60b] 1
2014-03-27 20:51:21.177 SpinNWin[15811:60b] 2
2014-03-27 20:51:21.177 SpinNWin[15811:60b] 1
2014-03-27 20:51:21.210 SpinNWin[15811:60b] 2
2014-03-27 20:51:21.210 SpinNWin[15811:60b] 1
2014-03-27 20:51:21.243 SpinNWin[15811:60b] 2

我期望该方法的执行是即时的,没有任何延迟或滞后。但是,正如您所注意到的,NSLog(@"1");NSLog(@"2"); 之间存在大约 0.03 秒的延迟。

有没有人知道为什么会发生这种情况以及如何避免这种情况?

最佳答案

因为行动需要时间来推进。在 SKScene 的 update: 方法运行后评估操作:

enter image description here(来源:Sprite Kit Programming Guide)

因此,如果您执行 runAction: Action 将在场景的更新方法之后才会运行。根据您是在 update: 消息链中的某处运行操作,还是在 didEvaluateActionsdidSimulatePhysics 中运行 Sprite Kit 可能会渲染一帧运行操作。

关于ios - SKNode runAction 滞后 :completion: in recursive method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22694195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com