swift - 如何在 SKScene 中正确设置 UIButton

标签 swift uibutton skscene tvos skview

我在场景/ View 中设置了一个 UIButton,当 ViewController 调用场景时,该按钮就会显示。问题是当我单击按钮并且我的游戏场景将被调用时,按钮仍然存在。我认为我以错误的方式设置了按钮。
我想问题是我无法在 startGame 函数中的 button1 上调用 removeFromSuperview() 函数。

我该如何解决这个问题?如有任何帮助,我们将不胜感激!

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

最佳答案

您可以通过 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()
}

关于swift - 如何在 SKScene 中正确设置 UIButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33615060/

相关文章:

ios - 当 UIButton 的 subview 是 UITableViewCell 的 subview 或任何其他 View 的 subview 时,设置 UIButton 边缘插入的理想位置是什么

swift - UIButtons 在所有设备上的形状都不正确

ios - 为什么按钮图像被压缩?

swift - 自引用实体,为了与 NSFetchedResultsController 建立父子关系

swift - 改变触摸按钮的颜色......然后再回来

ios - 如何通过代码从 SKScene 转到 UIViewController?

ios - 如何实现摄像头从前置摄像头更改为后置摄像头

ios - 我的游戏 View Controller UIButtons 有 IBOutlets,需要更好地组织

swift - 快节奏的 SpriteKit 游戏具有不规则的 CPU 事件,并且尽管帧速率保持在高水平,但仍会出现抖动/滞后 - Swift

swift - 如何改变SKScene的背景颜色?