Sprite Kit runAction 延迟,奇怪的错误?

Posted

技术标签:

【中文标题】Sprite Kit runAction 延迟,奇怪的错误?【英文标题】:Sprite Kit runAction delay, weird bug? 【发布时间】:2014-10-20 09:50:52 【问题描述】:

这是我第三次尝试解决 runAction 延迟完成的问题。

我已经做了一些测试,并走到了这一步。我希望有人能告诉我是否有某些设置导致了这种延迟。

我开始了一个新的精灵套件项目并添加了这个。它工作得很好。流畅的运动。

但是当我将“英雄”节点和此代码添加到我现有的项目中时,它会在操作和完成之间停止一毫秒。

有人知道原因吗?

-(void)loopTest 
SKAction *move = [SKAction moveTo:CGPointMake(hero.position.x+32, hero.position.y) duration:0.7];
[hero runAction:move completion:^
[self loopTest];
];

【问题讨论】:

哦,我明白了。有可能由于在这一帧评估了动作之后运行的完成块,下一个动作要到下一帧才会运行。因此,您有一个节点停止的 1 帧延迟。尝试使用 runBlock 操作而不是完成块。 loopTest 从 didmovetoview 调用一次,并且每次移动英雄一点。当动作结束时,它再次调用 loopTest 并再次移动英雄(仅用于测试)。毫秒不是一个精确的测量值,但暂停是清晰可见的,并且不会产生平滑的运动。 我更新了我的评论,在您的浏览器中刷新页面。 ;) 哈哈,在 iphone 上使用这个应用程序 :) 我会试试 runBlock 看看它是否能解决问题。会在我做的时候发布,现在在工作。谢谢 这听起来像是一个愚蠢的解决方案,但您是否考虑了 0.7 的操作持续时间?完成意味着它将等待它必须移动的 0.7 秒。除此之外,当您可以使用[hero runAction[SKAction repeatActionForever:move]];repeatAction: count: 对应项时,为什么还要再次调用loopTest?延迟可能是由于您再次调用该方法而不仅仅是重做操作 【参考方案1】:

我从头开始重建应用程序(耗时...)但问题出现在场景中..

我使用了 ResizeFill 而不是 AspectFill。当我更改它时,不再出现冻结问题。

【讨论】:

这似乎解决了它。 SKAction runBlock 使我的循环对象根本不显示。

以上是关于Sprite Kit runAction 延迟,奇怪的错误?的主要内容,如果未能解决你的问题,请参考以下文章

Sprite Kit 相机平滑移动,延迟

Sprite Kit - 使用 Switch Case 将随机 Sprite 节点添加到场景中

动画Action

swift 2 sprite-kit 中的多行标签?

Sprite Kit 场景未呈现

Sprite-kit:检测左右触摸