2017-12-31 165 views
0

ユーザーがSKShapeNodeをスクロールアップするときに関数を実行したいと思います。SKShapeNode Swiftにジェスチャー認識機能を追加する4

私は、次のコードを使用して全体のビューのためにそれを行うことができます。

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

を私はSKShapeNodeのために働くためにこのコードを変更するにはどうすればよいです。ありがとう

答えて

0

通常、クラスがUIKitの一部ではないため、SKSceneのインスタンスにジェスチャ認識機能を追加することはできません。しかし、ジェスチャ認識機能をビューに追加したので、別のハンドラメソッドを使用してスワイプジェスチャに応答することができます。

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 
    } 
} 
関連する問題