2016-04-29 8 views
0

Ich versuche, die gesamte Szene nach dem Spiel durch erneutes Laden der gleichen Szene zurücksetzen. Aber nachdem es geladen wurde, registriert der Bildschirm keine Berührungen. Nicht einmal touchesBegan funktionieren. Alles andere ist geladen, Sprites, Animationen usw. aber Berührungen werden nicht registriert.Sprite Kit: Keine Touch-Antwort nach Laden neuer Szene

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) 

} 

Antwort

0

Gelöst! Musste alle Subviews aus der Szene entfernen. Die einfachste Weg, das zu tun, war wie folgt aus:

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

Quelle: How to remove all subviews of a view in Swift?

+1

Die zweite Anweisung nicht benötigt wird, und es gibt einen Array, das nicht geeignet ist. – 0x141E