2017-11-23 18 views
0

이것은 내가 가지고있는 코드이며 그것을 클릭하면 메뉴를 표시하기위한 게임을 일시 중지하고 싶습니다. 오류가 표시되는 위치에 의견이 있으니 잘하면 내가 뭘 잘못하고 있는지 볼 수 있습니다. 이 코드는 당신이 날이 될해야 할 일을 알려 수없는 경우, 내 GameScene 파일에 있어야하는 경우나는 계속해서 '인스턴스 멤버 isPaused를 GameScene 유형에 사용할 수 없다'오류가 발생합니다.

또한 잘 모르겠어요. 도와 주려는에 대한

감사합니다.

// 
// 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() 
    } 
} 

답변

0

isPaused은 클래스 메소드가 아닌 인스턴스 메소드입니다. GameScene 인스턴스와 같은 SKNode의 특정 인스턴스에서 호출해야합니다.

변경 GameScene.isPaused = trueself.isPaused = true 또는 단순히 isPaused = true

그 문제 게다가, 당신은 당신의 didMove(to:) 방법 내부에서 pauseButton 방법을 이동해야합니다.

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

좋아, 감사합니다 - 많은 그것은 그 오류를 고정,하지만 난 그게 오류 ... "폐쇄에서 '자기'의 암시를 사용하는 방법을 보여줍니다 있음을 완료 한 후에 이유를 알고, '자기'를 사용합니다. 캡처 의미를 명시 적으로 만들겠습니까? " – husky

+0

답변을 수정 한 경우. 'isPaused = true'를'self.isPaused = true'로 변경하십시오. – rmaddy