我想让“aware”skspritenode知道触摸在节点之外(例如更改颜色)。
如果可能的话,我想使用tuochesmoved(脱离节点)
我不想以任何其他方式连接它们。
那些精灵应该是独立的。
怎么做?
谢谢你

最佳答案

显然,您可以实现touchesBegan方法来处理触摸事件:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    if let touch = touches.first {
        // ...
    }
    super.touchesBegan(touches, with: event)
}

用当前的swift 3语法处理触摸的其他事件是:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
}
override func touchesCancelled(_ touches: Set<UITouch>?, with event: UIEvent?) {
// Don't forget to add "?" after Set<UITouch>
}

关于这一点,如果您不想子类化您的SKSpriteNode来添加有用的属性,您可以使用userData属性来存储有关其他节点或自己以及当前上下文的信息:
yourSprite.userData = NSMutableDictionary()
yourSprite.userData?.setValue(SKColor.blue, forKeyPath: "currentColor")
yourSprite.userData?.setValue(true, forKeyPath: "selected")

关于swift - SKSpriteNode链,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40253284/

10-13 02:53