J'utilise un modèle d'application de jeu dans Swift 3 et lorsque je passe de l'écran de démarrage à la scène «Jeu», le bouton de l'écran «Démarrer» ne part pas. J'ai lu d'autres personnes à ce sujet mais rien n'a aidé. Mon bouton est un uibutton programmé avec un rectangle arrondi derrière le bouton pour le rendre joli. Le problème est que (le bouton et le UIBezierpath) ne disparaitra pas lorsque je changerai de scène - c'est exactement au même endroit que l'écran de démarrage. Mon code avec le bouton UIBezierpath:Ajout programmé UIButton ne disparaît pas après avoir changé de scène
let playAgain = UIButton()
playAgain.frame = CGRect(x: 225, y: 247, width: 115, height: 36)
playAgain.backgroundColor = SKColor.lightGray
playAgain.setTitle("Play", for: .normal)
playAgain.setTitleColor(.black, for: .normal)
self.view?.addSubview(playAgain)
playAgain.addTarget(self, action: #selector(playAgainTapped(_:)), for: .touchUpInside)
//now for the bezierpath/ rounded rect
//let doYourPath = UIBezierPath(rect: CGRect(x: 20, y: 20, width: 100, height: 36))
//this also works
let roundRect = UIBezierPath(roundedRect: CGRect(x: 218, y: 240, width: 130, height: 50), cornerRadius: 18)
let layer = CAShapeLayer()
layer.path = roundRect.cgPath
layer.strokeColor = UIColor.black.cgColor
layer.fillColor = UIColor.lightGray.cgColor
self.view?.layer.addSublayer(layer)
func playAgainTapped(_ sender: Any?) -> Void {
print("***********")
backToGame()
}
code de commutation scènes:
func backToGame(){
removeAllChildren()
run(SKAction.sequence([
SKAction.wait(forDuration: 3.0),
SKAction.run() {
// 5
let reveal = SKTransition.flipHorizontal(withDuration: 0.5)
let scene = GameScene(size: self.size)
self.view?.presentScene(scene, transition:reveal)
}
]))
}
Toutes les idées?
Que fait 'removeAllChildren'? – the4kman
@ the4kman supprime le texte du bouton. –