2015-09-17 24 views
0

簡單的SpriteKit場景。一些節點有名字。我只想在點擊/點擊特定節點時才執行轉換。因此,一些黑客周圍後,我定居在創建一組字符串和下面的代碼...限制SpriteKit轉換的節點名稱的最佳方法

override func mouseDown(theEvent: NSEvent) { 
    let location = theEvent.locationInNode(self) 
    let node = self.nodeAtPoint(location) 

    if let nodeName: String? = node.name { 
     if nodeName != nil && questionKeys.contains(nodeName!) { 
      transitionToAskScene(nodeName!) 
     } 

    } 
} 

我希望不會有嵌套的if語句,使用簡單一個檢查。雖然第一個檢查仍然運行,即使當nodeName是零(我猜是因爲它是一個Objective-C的零不是一個Swift可選?)這工作,但沒有人有一個更優雅的解決方案?

回答

2

假設你是最新的(xcode 7),你可以這樣編寫你的代碼。看起來你的問題更多的是關於如何避免使用嵌套的ifs

if let nodeName = node.name where questionKeys.contains(nodeName) { 
    print("cool") 
} 
+0

Duh。我仍然試圖讓這個語法堅持下去。謝謝。 – Hartix

相關問題