2017-08-11 13 views
0

Swift 3でゲームアプリテンプレートを使用していて、「開始」画面から「ゲーム」画面に移行すると、「開始」画面のボタン離れていない。 私はこれに似た他の人の投稿を読んだが、役に立たなかった。マイボタンは、ボタンの後ろにuibezierpathの丸い四角形が付いた、プログラムで追加されたuibuttonです。問題は、シーンを変更すると(ボタンとUIBezierpath)離れず、「開始」画面とまったく同じ場所にあることです。 UIBezierpathと マイボタンのコード:シーン切り替え後にUIButtonが表示されなくなった

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() 
    } 

スイッチ場面コード:

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) 
      } 
      ])) 
    } 

任意のアイデア?

+0

'removeAllChildren'とは何ですか? – the4kman

+0

@ the4kmanボタンからテキストを削除します。 –

答えて

0

シーンをボタンのスーパービューと同じビューで表示しています。

シーンはシーンに表示されているビューとは独立しているため、ボタンは変更されないため、削除したい場合は明示的に削除する必要があります。

はグローバルボタンや角丸長方形を宣言し、backToGameでのスーパー/スーパーレイヤからそれらを削除します。

let playAgain = UIButton() 
let layer = CAShapeLayer() 

func backToGame(){ 
    removeAllChildren() 

    playAgain.removeFromSuperview() 
    layer.removeFromSuperlayer() 

    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) 
     } 
     ])) 
} 
+0

ありがとうたくさんの作品!ビューやこのタイプのものについての良い記事の提案がありますか? –