当节点不在视图中时如何删除它?
Posted
技术标签:
【中文标题】当节点不在视图中时如何删除它?【英文标题】:How can I delete a node when it is out of the view? 【发布时间】:2015-05-05 21:00:39 【问题描述】:我有一个节点在视图中掉落。一旦它在视图之外,我需要将其删除,这样我就可以使用 if 语句调用一个函数来放置另一个。当它不再可见时如何删除它?它目前只调用该函数一次。
这是函数:
func dot()
var dotTexture = SKTexture (imageNamed: "dot")
dotTexture.filteringMode = SKTextureFilteringMode.Nearest
var dot = SKSpriteNode(texture: dotTexture)
dot.setScale(0.5)
dot.position = CGPoint(x: self.frame.size.width * 0.5 , y: self.frame.size.height * 1.1)
dot.physicsBody = SKPhysicsBody (circleOfRadius: dot.size.height/2.0)
dot.physicsBody?.dynamic = true
dot.physicsBody?.allowsRotation = false
self.addChild(dot)
println("done")
这是调用函数的 if 语句:
override func update(currentTime: CFTimeInterval)
/* Called before each frame is rendered */
if self.children.count == 0
dot()
【问题讨论】:
【参考方案1】:我发现最简单的方法是在屏幕底部添加一个新的SKNode
并使用与它的碰撞来删除您的点。创建一个空白SKNode
并将其位置设置为稍微偏离屏幕且其宽度等于场景宽度。然后设置contactTestBitMask
,这样您就可以知道点何时与节点发生碰撞。然后去掉didBeginContact(SKPhysicsContact: contact)
方法中的点
【讨论】:
我在处理重力时使用它。当处理一个将精灵移出屏幕的SKAction
时,我添加了一个带有移动动作的SKAction removeFromParent
动作以创建一个序列,一旦我离开屏幕,它就会删除节点。只是这些计算的基本数学。以上是关于当节点不在视图中时如何删除它?的主要内容,如果未能解决你的问题,请参考以下文章
swift - 当persistentContainer不在App委托方法中时如何从核心数据中删除所有数据