objective-c - SK节点生命周期

标签 objective-c sprite-kit

我想要实现的目标很简单。我希望某些 SKNode(或子类的对象)在添加到场景后消失一定时间

这当然可以通过在子类中实现一个计数器来轻松完成,该计数器会随着时间的推移而计时,并在达到 0 后将节点从场景中删除。另一个想法是将 SKAction.waitForDuration: 操作以及随后从父节点中删除该节点的操作。

我希望SKNode中已经实现了类似的功能,但找不到任何有希望的东西。

我是否遗漏了什么,或者我必须自己实现吗?

(请注意,这更多的是为了了解 SpriteKit,而不是关于自己实现这个是否麻烦)

奖励问题如果第一个问题的答案是(如预期)否: 什么是更有效的方法,使用前面提到的 SKAction 方法,或者在我的子类上使用“生命周期”实例变量和一个方法(由场景的 update: 方法调用),对该变量进行倒计时? 我的场景中可能有很多这些对象,而且它们的持续时间也可能不止几秒钟。

最佳答案

SKNode 并不是为了处理定时删除之类的事情而设计的。

SKAction 旨在处理这些类型的事情,例如:

SKAction *actionWait = [SKAction waitForDuration:3];
SKAction *actionRemove = [SKAction removeFromParent];
SKAction *sequence = [SKAction sequence:@[actionWait, actionRemove]];

[self runAction:sequence];

如果您愿意,您可以子类化 SKNode 并将该代码包装到一个方法中,或者创建一个类别并实现该方法。

关于objective-c - SK节点生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24705291/

相关文章:

sprite-kit - Sprite 套件 : cannot change node position in contact callback

ios - iOS Objective-C 中 true 和 YES 有什么区别

iphone - 获取数组对象的索引

objective-c - 无法关闭键盘

swift - 在 removefromParent 之后从场景中移除时让 Sprite 发出消息?

swift - Swift 中 SKLabel 节点的指定初始值设定项是什么

ios - iOS开发,带有if和else的返回函数以及自动释放

objective-c - UIImage imageWithXAssets

ios - 转场后出现的场景

ios - SpriteKit - 更改节点上的 anchor 会更改所有子节点的位置