【问题标题】:Add Gesture Recognizer to SKShapeNode Swift 4将手势识别器添加到 SKShapeNode Swift 4
【发布时间】:2017-12-31 14:01:51
【问题描述】:

我希望用户在 SKShapeNode 上向上滚动时执行一个函数。

我可以使用以下代码为整个视图执行此操作:

let swipeUp:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("swipedUp:"))
swipeUp.direction = .up
view?.addGestureRecognizer(swipeUp);

如何修改此代码以适用于 SKShapeNode。谢谢

【问题讨论】:

    标签: ios swift sprite-kit uigesturerecognizer


    【解决方案1】:

    通常您不能将手势识别器添加到SKScene 的实例中,因为该类不是UIKit 的一部分。但是由于您已将手势识别器添加到视图中,因此您可以使用单独的处理程序方法来响应滑动手势。

    override func didMove(to view: SKView) {
        let swipeUpGestureRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(self.handleSwipeFrom))
        self.view!.addGestureRecognizer(swipeUpGestureRecognizer)
    }
    
    @objc func handleSwipeFrom(_ recognizer: UISwipeGestureRecognizer) {
        switch recognizer.state {
        case .changed:
            if recognizer.direction == .up {
                let touchInView = recognizer.location(in: recognizer.view)
                let touch = convertPoint(fromView: touchInView)
                let nodeArray = nodes(at: touch)
                for node in nodeArray {
                    if node.name == "my shape node" {
                        // You've got a reference to your shape node and can take some action here (add movement or whatever)
                    }
                }
            }
        default:
            return
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-20
      • 2019-03-27
      • 2018-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多