如何使按钮和标签出现和消失

时间:2015-06-28 00:03:00

标签: ios swift button sprite-kit labels

我想知道的是什么:

我想知道如何使按钮/标签出现并消失。当我的角色与对象碰撞时,按钮/标签将显示在视图上,游戏视图将不再起作用,只有出现的按钮/标签可以与之交互。

我尝试过:

我已尝试过.hidden = false.hidden = true,但它没有用,但也许我没有正确使用它。

代码:我删除了不必要的代码!

import Foundation

import AVFoundation

import SpriteKit

class GameScene: SKScene, SKPhysicsContactDelegate {

var movingGround: PPMovingGround!
var square1: PPSquare1!
var square2: PPSquare2!
var wallGen: PPWallGen!

var isStarted = false
var isGameOver = false


override func didMoveToView(view: SKView) {


    addMovingGround()
    addSquare1()
    addWallGen()
    start()


}

func addSquare1() {
    square1 = PPSquare1()
    square1.position = CGPointMake(70, movingGround.position.y + movingGround.frame.size.height/2 + square1.frame.size.height/2)
    square1.zPosition = 1
    playerNode.addChild(square1)
}

func addWallGen() {
    wallGen = PPWallGen(color: UIColor.clearColor(), size: view!.frame.size)
    wallGen.position = view!.center
    addChild(wallGen)
}


func start() {
    isStarted = true

    //square2.stop()
    square1.stop()
    movingGround.start()
    wallGen.startGenWallsEvery(1)
}


// MARK - Game Lifecycle


func gameOver() {
    isGameOver = true

    // everything stops

    //square2.fall()
    square1.fall()
    wallGen.stopWalls()
    diamondGen.stopDiamonds()
    movingGround.stop()
    square1.stop()
    //square2.stop()


    // create game over label
    let gameOverLabel = SKLabelNode(text: "Game Over!")
    gameOverLabel.fontColor = UIColor.whiteColor()
    gameOverLabel.fontName = "Helvetica"
    gameOverLabel.position.x = view!.center.x
    gameOverLabel.position.y = view!.center.y + 80
    gameOverLabel.fontSize = 22.0
    addChild(gameOverLabel)

func restart() {

    let newScence = GameScene(size: view!.bounds.size)
    newScence.scaleMode = .AspectFill

    view!.presentScene(newScence)
}

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {

    if isGameOver {
        restart()
    } else {
        square1.flip()
    }

}

override func update(currentTime: CFTimeInterval) {


// MARK: - SKPhysicsContactDelegate
func didBeginContact(contact: SKPhysicsContact) {


    if !isGameOver {
        gameOver()
    } else {
        println("error, not game over!"        
}

1 个答案:

答案 0 :(得分:3)

如果没有看到您的代码,这有点难以确定,但我建议如下:

  1. 确保已将按钮连接到Outlet变量。这很关键。如果不连接它们,您可以使用隐藏的布尔值,但它不会对实际按钮产生影响。

  2. 请确保您没有以某种方式撤消自己的更改。例如,在代码的下游,即使将其设置为true,也可能将某些设置隐藏为false,等等。

  3. 在某些情况下,您可能希望将出口变量设置为强而非弱。这可能会保留视图切换时丢失的更改。

  4. 您还可以使用&#34; alpha&#34;如:

    myButton.alpha = 0

  5. 作为控制可见性的替代方法。 0会将alpha设置为none(这会使按钮不可见),1会将alpha设置为full(这会使按钮再次可见。)

    1. 在您设置隐藏(或alpha)后立即: println(&#34;我隐藏了按钮!&#34;) 只是为了确保你认为正在执行的代码正在被执行。有时我们认为不起作用的代码实际上甚至没有被调用。
    2. 请提供更多信息,我很乐意为您解决这个问题。