[英]Swipe gestures in just 1 scene, how to ignore on other scenes
我的視圖控制器中有以下代碼,可通過滑動手勢在GameScene中移動玩家:
override func viewDidLoad() {
super.viewDidLoad()
var scene:GameMenuScene!
var scene1: GameScene!
var scene2: LevelScene!
let skView = view as SKView
skView.multipleTouchEnabled = false
scene = GameMenuScene(size: skView.bounds.size)
skView.showsFPS = true
skView.showsNodeCount = true
skView.presentScene(scene)
let swipeRight:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("swipedRight:"))
swipeRight.direction = .Right
view.addGestureRecognizer(swipeRight)
let swipeLeft:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("swipedLeft:"))
swipeLeft.direction = .Left
view.addGestureRecognizer(swipeLeft)
let swipeUp:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("swipedUp:"))
swipeUp.direction = .Up
view.addGestureRecognizer(swipeUp)
let swipeDown:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("swipedDown:"))
swipeDown.direction = .Down
view.addGestureRecognizer(swipeDown)
}
func swipedRight(sender: UISwipeGestureRecognizer){
let skView = view as SKView
let gameScene = skView.scene as GameScene
gameScene.swipedRight1(sender)
}
func swipedLeft(sender: UISwipeGestureRecognizer){
let skView = view as SKView
let gameScene = skView.scene as GameScene
gameScene.swipedLeft1(sender)
}
func swipedDown(sender: UISwipeGestureRecognizer){
let skView = view as SKView
let gameScene = skView.scene as GameScene
gameScene.swipedDown1(sender)
}
func swipedUp(sender: UISwipeGestureRecognizer){
let skView = view as SKView
let gameScene = skView.scene as GameScene
gameScene.swipedUp1(sender)
}
問題:當我在非gameScene的另一個屏幕上滑動時,游戲崩潰是因為“無法識別的選擇器已發送”,所以我只想在GameScene中使用滑動功能,而不要在LevelScene或GameMenuScene中使用滑動功能。 對於GameMenuScene和LevelScene,我想添加其他滑動功能。
如何檢測我所在的場景,以便做出if語句?
謝謝
在您的GameScene中添加此...
override func willMoveFromView(view: SKView) {
if view.gestureRecognizers != nil {
for gesture in view.gestureRecognizers! {
if let recognizer = gesture as? UISwipeGestureRecognizer {
view.removeGestureRecognizer(recognizer)
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.