我试图通过再次加载相同的场景来重置游戏结束时的整个场景。但在加载后,屏幕不会记录任何触摸。甚至没有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 :(得分:0)
解决!不得不从场景中删除所有子视图。最简单的方法就是这样:
view.subviews.forEach({ $0.removeFromSuperview() }) // this gets things done
view.subviews.map({ $0.removeFromSuperview() }) // this returns modified array