2015-11-04 84 views
0

我想創建一組精靈,並在碰觸它們時一次刪除它們。到目前爲止發生的事情是,當我添加代碼時,最後一個精靈被移除,而不是我接觸的精靈。如何創建一個精靈,然後用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() 

     } 

} 
+0

我想,for循環內的touchesBegan所定義,並且「子畫面」的變量被定義爲一個屬性(其不是一些方法內本地定義的)?如果是這種情況,發生的事情就是你一遍又一遍地創建精靈,但是「精靈」變量最終只能通過只引用最後創建的節點來引用。 – Whirlwind

+0

我不得不刪除一些垃圾,但確實被刪除了。 – ParalaxWobat

回答

1

要刪除觸摸節點:

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 

    for touch in touches { 
     let location = touch.locationInNode(self) 
     let touchedNode = nodeAtPoint(location) 
     touchedNode.removeFromParent() 
    }