2017-08-18 2 views
-1

Ich versuche, Szenen zu wechseln, wenn Sie eine Taste drücken, aber wenn ich darauf klicke, passiert nichts und nichts wird gedruckt. Es gibt keine Fehler, ich frage mich nur, warum es nicht funktioniert. Der Knoten, den ich programmiert habe, zeigt sich in der richtigen Größe und Position, aber wenn Sie darauf tippen, passiert nichts. Danke für jede Hilfe.Fehler beim Wechseln von Szenen durch einen Knopfknoten

Code:

class LevelScene: SKScene, SKPhysicsContactDelegate { 

    var isFingerOnBlock = false 
let LevelOneName = "levelOne" 

    override func didMove(to view: SKView) { 
     super.didMove(to: view) 
     let Pineapple = SKSpriteNode(imageNamed: "ball") 
     Pineapple.isUserInteractionEnabled = true 
     Pineapple.position = CGPoint(x: self.frame.midX - 200, y: self.frame.midY); 
     Pineapple.name = "pineapple" 
     addChild(Pineapple) 

    } 





    func touchesBegan(touches: NSSet, withEvent event: UIEvent) 
    { 
       let touch = touches.anyObject() as! UITouch 
     let location = touch.location(in: self) 
     let nodes = self.nodes(at: location) 

     for node in nodes 
     { 
      if node.name == "pineapple" 
      { 
      print("ceeds") 

       if let scene = GameScene(fileNamed:"GameScene") { 
        // Configure the view. 
        let skView = self.view! 
        skView.showsFPS = true 
        skView.showsNodeCount = true 

        /* Sprite Kit applies additional optimizations to improve rendering performance */ 
        skView.ignoresSiblingOrder = true 

        /* Set the scale mode to scale to fit the window */ 
        scene.scaleMode = .aspectFit 

        skView.presentScene(scene) 


       } 
       break 
      } 
     } 
} 

} 

Antwort

0

Sie erklärt haben

func touchesBegan(touches: NSSet, withEvent event: UIEvent) 

Es gibt keine eingebaute in Funktion mit dieser Signatur und Sie nie diese Funktion aufrufen; Daher ist Ihre Funktion nie genannt.

+1

Sie haben vielleicht beabsichtigt, diese Funktion zu implementieren? https://developer.apple.com/documentation/uikit/uiresponder/1621142-touchesbegan – matt

0

Danke Matt! Ich habe meinen Code repariert: Es funktioniert jetzt ..

override func touchesBegan(_ touches: Set<UITouch>, 
         with event: UIEvent?) { 
     let touch = touches.first! 
     let location = touch.location(in: self) 
     let node : SKNode = self.atPoint(location) 
     if(atPoint(location) == node){ 
      if node.name == "levelOne" { 
       if let scene = GameScene(fileNamed:"GameScene") { 
        // Configure the view. 
        let skView = self.view as! SKView 
        skView.showsFPS = true 
        skView.showsNodeCount = true 

        /* Sprite Kit applies additional optimizations to improve rendering performance */ 
        skView.ignoresSiblingOrder = true 

        /* Set the scale mode to scale to fit the window */ 
        scene.scaleMode = .aspectFit 

        skView.presentScene(scene) 


       } 
      } 

     } 

} 
Verwandte Themen