2015-07-12 84 views
0

在我的遊戲中,我有一種方法降低精靈。當用戶丟失(gameStarted == false)時,我需要一種方法來刪除我帶入場景的所有這些節點。我試圖通過簡單地說出ball.removeFromParent()和使用底部的removeBalls函數兩種方式來移除這些節點。兩種方法都阻止未來的球進入現場,但並沒有消除已經存在的球。如果有人有辦法做到這一點,我會非常感激。刪除存在的所有節點

override func didMoveToView(view: SKView) { 
var create = SKAction.runBlock({() in self.createTargets()}) 
var wait = SKAction.waitForDuration(2) 
var createAndWaitForever = SKAction.repeatActionForever(SKAction.sequence([create, wait]) 
self.runAction(createAndWaitForever) 


} 
     func createTargets() { 

      ball = SKSpriteNode(imageNamed:"blueBlue") 

       let randomx = Int(arc4random_uniform(370) + 165) 
       ball.position = CGPoint(x: randomx, y: 1400) 
       addChild(ball) 

       let moveDown = SKAction.moveBy(CGVector(dx: 0, dy: -1300), duration: 7) 



      if gameStarted == false { 

       ball.removeAllActions() 

       ball.removeFromParent() 

       removeBalls([ball]) 
      } 

      if gameStarted && spawnReady { 

       ball.runAction(moveDown) 

       if ball.parent == nil { 

        addChild(ball) 
       }  
      } 
      } 

func removeBalls(balls : [SKSpriteNode]) { 

      for ball in balls { 

      ball.removeFromParent() 
      } 
     } 

回答

1

你在哪裏保持每個的軌道?你有一個陣列?

這樣做:

  1. 提供一個名稱的ball節點,說 「球」
  2. 枚舉

斯威夫特

self.enumerateChildNodesWithName("ball", usingBlock: { 
    (node: SKNode!, stop: UnsafeMutablePointer <ObjCBool>) -> Void in 
    node.removeFromParent() 
}) 

對象 -

[self enumerateChildNodesWithName:@"ball" usingBlock:^(SKNode *node, BOOL *stop) { 
    [node removeFromParent]; 
}];` 
+0

嗨,謝謝你的回覆。我沒有一個數組來跟蹤我的節點。我想嘗試你的代碼,但不幸的是我無法將它翻譯成swift。 –