2017-11-23 3 views
0

Dies ist der Code, den ich habe und ich habe eine Schaltfläche, wenn ich es anklicke, möchte ich das Spiel anhalten, um ein Menü anzuzeigen ... I Habe Kommentare, wo der Fehler auftaucht, damit du hoffentlich sehen kannst, was ich falsch mache.Ich bekomme ständig den Fehler 'Instanz Mitglied isPauseed kann nicht auf Typ GameScene verwendet werden'

Auch ich bin nicht sicher, ob dieser Code soll in meiner GameScene Datei sein, wenn nicht könnten Sie mir, die man wissen lassen, es in sein sollte.

Dank für das versucht zu helfen.

// 
// GameScene.swift 
// Pong2 
// 
// Created by Hussain on 10/11/16. 
// Copyright © 2016 Archetapp. All rights reserved. 
// 

import SpriteKit 
import GameplayKit 

class GameScene: SKScene { 

    var ball = SKSpriteNode() 
    var enemy = SKSpriteNode() 
    var main = SKSpriteNode() 

    var topLbl = SKLabelNode() 
    var btmLbl = SKLabelNode() 

    var score = [Int]() 

    @IBOutlet weak var pauseBetton: UIButton! // HERE IS MY OUTLET 


    override func didMove(to view: SKView) { 

     func pauseButton (sender: UIButton){ // HERE'S MY FUNCTION TO TRY AND PAUSE MY GAME 
      let pauseAction = SKAction.run { 
       GameScene.isPaused = true // HERE'S THE LINE I GET MY ERROR 
       debugPrint("Paused") 
      } 
     } 



     topLbl = self.childNode(withName: "topLabel") as! SKLabelNode 
     btmLbl = self.childNode(withName: "btmLabel") as! SKLabelNode 
     ball = self.childNode(withName: "ball") as! SKSpriteNode 

     print(self.view?.bounds.height) 

     enemy = self.childNode(withName: "enemy") as! SKSpriteNode 
     enemy.position.y = (self.frame.height/2) - 50 

     main = self.childNode(withName: "main") as! SKSpriteNode 
     main.position.y = (-self.frame.height/2) + 50 

     let border = SKPhysicsBody(edgeLoopFrom: self.frame) 

     border.friction = 0 
     border.restitution = 1 

     self.physicsBody = border 

     startGame() 
    } 
} 

Antwort

0

isPaused ist eine Instanzmethode, keine Klasse-Methode. Sie müssen es an einer bestimmten Instanz einer SKNode wie Ihre GameScene Instanz aufgerufen haben.

ändern GameScene.isPaused = true-self.isPaused = true oder einfach isPaused = true

Neben dieser Frage müssen Sie Ihre pauseButton Methode aus Ihrer didMove(to:) Methode bewegen.

func pauseButton (sender: UIButton) { 
    let pauseAction = SKAction.run { 
     self.isPaused = true 
     debugPrint("Paused") 
    } 
} 

override func didMove(to view: SKView) { 
    topLbl = self.childNode(withName: "topLabel") as! SKLabelNode 
    btmLbl = self.childNode(withName: "btmLabel") as! SKLabelNode 
    ball = self.childNode(withName: "ball") as! SKSpriteNode 

    print(self.view?.bounds.height) 

    enemy = self.childNode(withName: "enemy") as! SKSpriteNode 
    enemy.position.y = (self.frame.height/2) - 50 

    main = self.childNode(withName: "main") as! SKSpriteNode 
    main.position.y = (-self.frame.height/2) + 50 

    let border = SKPhysicsBody(edgeLoopFrom: self.frame) 

    border.friction = 0 
    border.restitution = 1 

    self.physicsBody = border 

    startGame() 
} 
+0

Ok, danke a-lot es fest, dass Fehler, aber wissen Sie, warum, nachdem ich getan habe, dass es den Fehler zeigt ... „Implizite Verwendung von‚Selbst‘in Schließung,‚Selbst‘verwenden. die Capture-Semantik explizit machen? – husky

+0

Wenn die Antwort behoben. Ändern Sie "isPaused = true" in "self.isPaused = true". – rmaddy

Verwandte Themen