2017-11-23 11 views
0

これは私が持っているコードです。私はそれをクリックするとメニューを表示するためにゲームを一時停止したいというボタンがあります。エラーが表示されているところのコメントがあるので、私が間違っていることをうまく見ることができます。私はいつもエラーが発生しました 'Instance member isPausedはGameSceneタイプで使用できません'

はまた、私は、このコードは私のGameSceneファイルにすることになっているかどうかわからないんだけど、そうでない場合はあなたが私はそれがであるべきである1知っているようでした。手助けしようとしているため

感謝を。

// 
// 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 = trueisPaused = trueself.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

[OK]を、おかげで、たくさんの閉鎖の 『自己』の暗黙の使用」...それはそのエラーを修正しますが、私はそれがエラーを示していることをやった理由を後に知っています; 『自己』を使用。キャプチャセマンティクスを明示的にする "? – husky

+0

答えを修正した場合。 'isPaused = true'を' self.isPaused = true'に変更してください。 – rmaddy

関連する問題