2017-12-31 60 views
0

사용자가 SKShapeNode에서 위로 스크롤 할 때 함수를 실행하고 싶습니다.제스처 인식기를 SKShapeNode Swift에 추가하십시오.

나는 다음과 같은 코드를 사용하여 전체보기 위해 그것을 할 수 있습니다

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 
    } 
} 
관련 문제