SKSpriteNode 从屏幕上消失后如何删除或销毁它

Posted

技术标签:

【中文标题】SKSpriteNode 从屏幕上消失后如何删除或销毁它【英文标题】:How to remove or destroy SKSpriteNode once it disappears from screen 【发布时间】:2017-07-01 19:44:41 【问题描述】:

我正在使用 Swift 3 制作 Flappy Bird 类游戏。我在函数“makePipes()”的帮助下生成管道,我用计时器每 3 秒调用一次。 “makePipes()”函数为管道生成 SKSpriteNode,并将它们从屏幕右侧移动到屏幕左侧。 我想做的是,在管道节点从屏幕上消失或完成从屏幕一侧到另一侧的移动后,将其销毁。

另一种解决方案是在管道从右向左移动后重新使用它们。

pipe1.run(movePipes)  
        self.pipe1.removeFromParent()
    

我尝试了上述解决方案,但它不起作用。它在屏幕上显示奇怪的闪烁线条,并且管道变得奇怪且随机放置而不是均匀放置。

感谢任何帮助。我对 ios 很陌生。

【问题讨论】:

【参考方案1】:

你可以这样做:-

movePipesForward = SKAction.moveByX(-dx, y: 0 ,duration: duration)
removePipes = SKAction.removeFromParent()
moveForwardAndRemove = SKAction.sequence([movePipesForward, removePipes])
pipe1.runAction(moveForwardAndRemove)
self.addChild(pipe)

【讨论】:

完美运行。虽然,我是否可以使用非重复计时器来调用另一个函数,该函数在所需时间后移除管道? 如果管道的移动和时间同步,则可以在所需的时间后移除管道,这更多的是命中和试验..

以上是关于SKSpriteNode 从屏幕上消失后如何删除或销毁它的主要内容,如果未能解决你的问题,请参考以下文章

SKSpriteNode 未加载到屏幕上?

鼠标单击后从屏幕上删除 pygame sprite [重复]

堆栈视图中删除的元素不会在屏幕上消失

SKSpriteNode 从屏幕上掉下来

删除子 SKSpriteNode

SKSpriteNode 在 GameScene 中消失