2016-02-25 76 views
0

我正在構建一個主要通過點擊屏幕(任何地方)進行遊戲的遊戲。我目前添加了一個設置按鈕,當點擊時,打開一個設置窗口。點擊精靈時發生的其他操作;如何防止

問題是,當點擊設置按鈕時,交互也會發生在遊戲中。有什麼辦法可以防止這種情況發生?

我的設置屏幕與設置功能一起使用,覆蓋觸摸開始通過布爾表達式起作用。

遊戲通過添加到didMoveToView視圖中的UITapGestureRecognizer播放。

/* Game Interaction & Playability */ 
override func didMoveToView(view: SKView) { 
    let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: Selector("tapped:")) 
    view.addGestureRecognizer(tap) 
} 

/* Settings Button Interaction */ 
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    for touch in touches { 
     let positionInScene = touch.locationInNode(self) 
     let touchedNode = self.nodeAtPoint(positionInScene) 

     if let name = touchedNode.name { 
      if name == "Settings" { 
       if settingsOpen == false { 
        settings() 
       } else { 
        settings() 
       } 
      } 
     } 
    } 
} 
+0

我唯一能想到的就是創建一個更小的視圖並將它放置在屏幕頂部的主視圖上方並將SKSpriteNode按鈕附加到它上面。我會想象,因爲按鈕將成爲不同視圖的一部分,我不會得到水龍頭衝突。但在我進行這一改變之前,如果有人有更簡單的解決方案,我將不勝感激。 – Electric

回答

0

嗯,你有幾個手勢識別器在這裏工作。您實際上並不需要在視圖中添加識別器以確定是否有人正在點擊它。這已經爲你處理(因此,爲什麼touchesBegan沒有添加其他識別器的原因)。

我會說刪除額外的識別器,並將代碼tapped:移動到您的touchesBegan

+1

工作完美,不得不在觸摸開始有點玩,但得到它的工作。謝謝! – Electric

相關問題