如何创建一个精灵,然后用Swift通过触摸删除SpriteKit中的特定精灵?
问题描述:
我想创建一组精灵,并在碰触它们时一次删除它们。到目前为止发生的事情是,当我添加代码时,最后一个精灵被移除,而不是我接触的精灵。如何创建一个精灵,然后用Swift通过触摸删除SpriteKit中的特定精灵?
var sprite = SKSpriteNode?()
var touchLocation : CGPoint?
for touch in touches {
let location = touch.locationInNode(self)
touchLocation = location
addASprite()
}
removeSprite()
}
func addASprite(){
sprite = SKSpriteNode(color: UIColor.orangeColor(), size: CGSize(width: 100, height: 100))
sprite!.position = touchLocation!
self.addChild(sprite!)
}
func removeSprite(){
if ((sprite?.containsPoint(touchLocation!) != nil)){
sprite?.removeFromParent()
}
}
答
要删除触摸节点:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch in touches {
let location = touch.locationInNode(self)
let touchedNode = nodeAtPoint(location)
touchedNode.removeFromParent()
}
我想,for循环内的touchesBegan所定义,并且“子画面”的变量被定义为一个属性(其不是一些方法内本地定义的)?如果是这种情况,发生的事情就是你一遍又一遍地创建精灵,但是“精灵”变量最终只能通过只引用最后创建的节点来引用。 – Whirlwind
我不得不删除一些垃圾,但确实被删除了。 – ParalaxWobat