精灵套件:加载新场景后没有触摸响应

时间:2016-04-29 17:15:19

标签: ios swift sprite-kit

我试图通过再次加载相同的场景来重置游戏结束时的整个场景。但在加载后,屏幕不会记录任何触摸。甚至没有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)

}

1 个答案:

答案 0 :(得分: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?