2016-04-29 3 views
0

同じシーンを再度ロードしてゲームが終了したら、シーン全体をリセットしようとしています。しかし、ロードされた後、画面はタッチを登録しません。さらにtouchesBeganの作業はありません。他のすべてはロードされ、スプライト、アニメーションなどがロードされますが、タッチは登録されません。スプライトキット:新しいシーンを読み込んだ後にタッチレスポンスが表示されない

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    player.physicsBody?.dynamic = true 
    player.physicsBody?.velocity.dy = CGFloat(500) 
    createLeftButton() 
    createRightButton() 

    createRightButtonFirst() 
    createLeftButtonFirst() 
} 

func endGame() { 
    gameOver = true 
    scoreboardSetup() 
    playButton() 
    highscoreButton() 
    label!.hidden = true 
    timer2.invalidate() 
    timer1.invalidate() 
    player.physicsBody?.dynamic = false 
} 


func playButton() { 
    let image = UIImage(named: "playButton") as UIImage? 
    playbtn = UIButton(); 
    playbtn.setImage(image, forState: .Normal) 
    playbtn.frame = CGRectMake(CGRectGetMidX(self.frame) - 152, CGRectGetMidY(self.frame) + 65, 133, 76) // X, Y, width, height 

    playbtn.addTarget(self, action: #selector(GameScene.playBtn), forControlEvents: .TouchUpInside) 
    self.view!.addSubview(playbtn) 
} 
func playBtn() { 
    playbtn.removeFromSuperview() 
    highscorebutton.removeFromSuperview() 
    self.removeAllChildren() 
    self.removeAllActions() 
    self.scene?.removeFromParent() 
    let gameScene:GameScene = GameScene(size: self.size) // create your new scene 
    let transition = SKTransition.fadeWithDuration(1.0) // create type of transition (you can check in documentation for more transtions) 
    self.view!.presentScene(gameScene, transition: transition) 

} 

答えて

0

解決済み!シーンからすべてのサブビューを削除しなければならなかった。

view.subviews.forEach({ $0.removeFromSuperview() }) // this gets things done 
view.subviews.map({ $0.removeFromSuperview() }) // this returns modified array 

ソース:How to remove all subviews of a view in Swift?

+1

番目のステートメントが必要であり、それは便利ではない配列を返すされていないことを行うための最も簡単な方法は、このようなものでした。 – 0x141E

関連する問題