我的游戏中的UIGestures存在问题 在gamecene,它们工作得很完美,但当我移动到另一个场景时,UIgestures保持活动状态,如果我使用它们(滑动)而不是崩溃。
我知道我必须在Gamescene文件中使用willmovefromview方法,但是已经工作了2天但仍然没有工作..
这是我的viewcontroller文件:(请参阅手势功能和手势识别器的注释)
import UIKit
import SpriteKit
import AVFoundation
class GameViewController: UIViewController, UITextFieldDelegate{
//gesture functions
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)
}
override func viewDidLoad() {
super.viewDidLoad()
let skView = view as SKView
skView.multipleTouchEnabled = false
scene = GameMenuScene(size: skView.bounds.size)
//scene.scaleMode = SKSceneScaleMode.ResizeFill
skView.showsFPS = true
skView.showsNodeCount = true
skView.presentScene(scene)
//Gesture recognizers
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)
}
override func viewDidLayoutSubviews() {
}
override func prefersStatusBarHidden() -> Bool {
return true
}
}
PS:我的应用程序是从一个menucene开始的,并且滑动只能在gamescene上激活,所以我认为我也必须使用didmovetoview方法。
以下是我的gamescene文件中的didmovetoview方法和willmovefromview方法:
override func didMoveToView(view: SKView) {
}
override func willMoveFromView(view: SKView) {
}
谁会帮助我? 提前致谢
答案 0 :(得分:0)
override func willMoveFromView(view: SKView) {
for recognizer in self.view.gestureRecognizers! {
self.view.removeGestureRecognizer(recognizer)
}
}
答案 1 :(得分:-1)
self.view.gestureRecognizers=nil;
它对我有用。