2017-12-31 117 views
0

Ich möchte eine Funktion ausgeführt werden, wenn ein Benutzer auf einem SKShapeNode scrollt.Hinzufügen von Gestenerkenner zu SKShapeNode Swift 4

Ich kann es für die ganze Sicht tun mit dem folgenden Code:

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

Wie kann ich diesen Code ändern für eine SKShapeNode zu arbeiten. Danke

Antwort

0

Normalerweise können Sie keine Gestenerkenner zu einer Instanz von SKScene hinzufügen, da die Klasse nicht Teil von UIKit ist. Da Sie jedoch den Gestenerkenner der Ansicht hinzugefügt haben, können Sie eine separate Handler-Methode verwenden, um auf die Wischgesten zu reagieren.

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 
    } 
} 
Verwandte Themen