2017-04-22 7 views
-1

最後のラベルlblTryAgain GameSceneという名前の別のクラスに戻りたいが、タップアクションがtouchesBegan関数に入っていない。 私はちょうど誰かがチュートリアルに従うか、コード全体がhttps://www.raywenderlich.com/87231/make-game-like-mega-jump-sprite-kit-swift-part-1TouchesBeganが機能しない

import SpriteKit 

class EndGameScene: SKScene { 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
    } 

    override init(size: CGSize) { 
     super.init(size: size) 

     // Stars 
     let star = SKSpriteNode(imageNamed: "Star") 
     star.position = CGPoint(x: 25, y: self.size.height-30) 
     addChild(star) 

     let lblStars = SKLabelNode(fontNamed: "ChalkboardSE-Bold") 
     lblStars.fontSize = 30 
     lblStars.fontColor = SKColor.white 
     lblStars.position = CGPoint(x: 50, y: self.size.height-40) 
     lblStars.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.left 
     lblStars.text = String(format: "X %d", GameState.sharedInstance.stars) 
     addChild(lblStars) 

     // Score 
     let lblScore = SKLabelNode(fontNamed: "ChalkboardSE-Bold") 
     lblScore.fontSize = 60 
     lblScore.fontColor = SKColor.white 
     lblScore.position = CGPoint(x: self.size.width/2, y: 300) 
     lblScore.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.center 
     lblScore.text = String(format: "%d", GameState.sharedInstance.score) 
     addChild(lblScore) 

     // High Score 
     let lblHighScore = SKLabelNode(fontNamed: "ChalkboardSE-Bold") 
     lblHighScore.fontSize = 30 
     lblHighScore.fontColor = SKColor.cyan 
     lblHighScore.position = CGPoint(x: self.size.width/2, y: 150) 
     lblHighScore.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.center 
     lblHighScore.text = String(format: "High Score: %d", GameState.sharedInstance.highScore) 
     addChild(lblHighScore) 


     // Try again 
     let lblTryAgain = SKLabelNode(fontNamed: "ChalkboardSE-Bold") 
     lblTryAgain.fontSize = 30 
     lblTryAgain.fontColor = SKColor.white 
     lblTryAgain.position = CGPoint(x: self.size.width/2, y: 50) 
     lblTryAgain.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.center 
     lblTryAgain.text = "Tap To Try Again" 
     lblTryAgain.isUserInteractionEnabled = true 
     addChild(lblTryAgain) 


    } 

    func touchesBegan(touches: NSSet, withEvent event: UIEvent) { 
     // Transition back to the Game 
     let reveal = SKTransition.fade(withDuration: 0.5) 
     let gameScene = GameScene(size: self.size) 
     self.view!.presentScene(gameScene, transition: reveal) 
    } 

} 
+0

あなたの方法のタッチを追加または更新宣言がtouchesBegan FUNC –

+4

'オーバーライド(_が触れる:イベントとセットを、:たUIEvent?)間違っている始めた{' –

+0

が迅速3であなた取り組んでいますか? –

答えて

1

touchesBeganで利用可能で見たい場合はSpriteKitベースでゲームを作成する方法を学ぶためのチュートリアルを、以下の午前にのみself.viewで動作し、それオーバーライドfuncですisUserInteractionEnabledがチェックされ、print文が動作しない場合がありますことを確認してください。この

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 

    print("working") 
} 
+0

'touchesBegan'は、オーバーライドされた関数ではなく、instaceメソッドです。クラスでこのメソッドをオーバーライドして、ビューまたはウィンドウで新しいタッチが検出されたかどうかを確認できます。そして、それは 'self.view'に限られていません.. –

1

を試みる他のUI では動作しません。 sceneDidLoadと印刷isUserInteractionEnabled

関連する問題