2015-10-02 185 views
1

我正在Swift上開發一款小遊戲,並且我一直在努力。在這個自定義類中,我使用了touchesBegan方法,並且在此方法中我想創建一個SkNode。這是我的代碼:在哪裏添加孩子?

class TouchableSpriteNode : SKSpriteNode 

    { 


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

     self.removeFromParent() 
     let delay = Int(arc4random_uniform(UInt32(200)))*Int(NSEC_PER_SEC)/100 
     let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay)) 
     dispatch_after(time, dispatch_get_main_queue()) { 
      let random2 = arc4random_uniform(UInt32(self.frame.size.width)) 
      let random3 = arc4random_uniform(UInt32(self.frame.size.height)) 

      div.position = CGPoint(x: Int(random2), y: Int(random3)) 
      self.addChild(div) 
     } 
     } 
} 

的問題是,我不能讓它顯示在屏幕上,因爲我得到它說,你不能說孩子,因爲這是他自己的父(這是複雜的錯誤),我想知道的事情是我怎麼能說增加孩子到現場,而不是這個skspritenode? 任何幫助表示讚賞!謝謝

+0

你可以發佈「複雜」的錯誤? :) –

+0

錯誤並不複雜,爲什麼這個類是SKSpriteNode的父類是複雜的.. –

+0

你究竟在哪裏聲明'div'?如果你想添加'div'的多個實例,聲明應該在你的函數中。否則,它會嘗試重新添加已添加的節點(而不是添加節點的新實例),從而導致錯誤。這是怎麼回事? –

回答

1

我要寫這個沒有測試,但它應該工作:就在你打電話self.removeFromParent()之前添加行parent = self.parent;然後使用parent.addChild(div)而不是self.addChild(div)

這是否有竅門?

1

這不會是你正在尋找的答案,但我不確定你可以從另一個類中添加一個節點到你的視圖控制器。對於這種情況,我建議在視圖控制器中執行touchesBegan,並在該功能內部檢測觸摸是否發生在您的可觸摸節點上。然後,您可以輕鬆地從視圖中添加和刪除對象。

+0

哦,很高興知道!謝謝。 –