限制SpriteKit转换的节点名称的最佳方法

时间:2015-09-17 20:41:56

标签: swift sprite-kit

简单的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为nil(我猜测因为它是一个Objective-C nil而不是一个Swift可选?)这样可行,但有没有人有更优雅的解决方案?

1 个答案:

答案 0 :(得分:2)

假设你是最新的(xcode 7),你可能会像这样写你的代码。看起来您的问题更多的是如何避免使用嵌套ifs

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