2015-11-09 465 views
0

我在Scene/View中設置了UIButton,按鈕顯示ViewController調用Scene的時間。問題是當我點擊按鈕,我的GameScene將被調用,按鈕將仍然存在。我想我以錯誤的方式設置了按鈕。
我想問題是我不能在我的startGame函數中的button1上調用removeFromSuperview()函數。如何在SKScene中正確設置UIButton

我該如何解決這個問題?任何幫助表示讚賞!

import Foundation 
import SpriteKit 
import UIKit 

class MenuScene: SKScene { 


    override init(size: CGSize) { 

     super.init(size: size) 

     backgroundColor = SKColor.grayColor() 

     let label = SKLabelNode(fontNamed: "CourierNewPS-BoldMT") 
     label.text = "Start Game" 
     label.fontSize = 40 
     label.fontColor = SKColor.blackColor() 
     label.position = CGPoint(x: size.width/2, y: size.height/2) 
     addChild(label) 
    } 


    override func didMoveToView(view: SKView) { 

     let button1=UIButton(frame: CGRectMake(size.width/2, size.height/2, 300, 100)) 
     button1.backgroundColor = UIColor.greenColor() 
     button1.setTitleColor(UIColor.blackColor(), forState: .Normal) 
     button1.setTitle("Unfocused", forState: .Normal) 
     button1.setTitle("Start", forState: .Focused) 
     button1.addTarget(self, action: "startGame:", forControlEvents: UIControlEvents.PrimaryActionTriggered) 

     self.view?.addSubview(button1) 
    } 



    func startGame(sender:UIButton) { 
     let gameView = view! as SKView 
     gameView.ignoresSiblingOrder = true 

     let reveal = SKTransition.flipHorizontalWithDuration(0.2) 
     let scene = GameScene(size: self.size) 
     gameView.presentScene(scene, transition:reveal) 

    } 


    required init(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 
} 

回答

1

你必須從startGame(sender:UIButton)sender訪問您button1對象。在這種情況下,參考button1。你可以撥打removeFromSuperview的方法:

func startGame(sender:UIButton) { 
    let gameView = view! as SKView 
    gameView.ignoresSiblingOrder = true 

    let reveal = SKTransition.flipHorizontalWithDuration(0.2) 
    let scene = GameScene(size: self.size) 
    gameView.presentScene(scene, transition:reveal) 

    sender.removeFromSuperview() 
} 
+0

哈,就是這樣。非常感謝!哦,如果我有另一個按鈕 - 我將如何刪除它們。 sender.removeFromSuperview()在這裏不起作用,因爲另一個Button不是發件人。 – user2877744

+0

找到了我上面發佈的問題的答案。我只需要在MenuScene類中定義按鈕。 – user2877744