【问题标题】:How to make buttons and labels appear and disappear如何使按钮和标签出现和消失
【发布时间】:2015-09-14 16:26:04
【问题描述】:

我想知道的:

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

我尝试过的:

我尝试了.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!"        
}

【问题讨论】:

  • 所以您的意思是当您将.hidden 设置为false/true 时按钮并没有消失和重新出现?
  • @Kametrixom 是的,但我必须没有正确使用该命令,你能给我举个例子吗?由于我的按钮/标签总是出现在我的游戏中,所以...idk。我将我的按钮放在 Main.storyboard 中,这样它在玩游戏时就会与游戏重叠。但我不希望它只是在玩家与某物碰撞时出现。我已经为此设置了一些东西,我只需要知道如何使用这些命令。
  • 那你得把右边属性检查器中的“hidden”属性设置为false,那么开头就不显示了
  • @Kametrixom 可以隐藏它们,但是现在如何让它们在与我的对象碰撞时出现?
  • 只需将hidden 属性设置为true。我对 SpriteKit 中的碰撞没有任何经验,因此我无法为您提供帮助,但我相信如果您只是在 Google 中搜索它,您会找到很多教程

标签: ios swift button sprite-kit labels


【解决方案1】:

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

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

  2. 确保您没有以某种方式撤消自己的更改。例如,在代码的更下方,即使您将其设置为 true,您也可能将某些内容设置为 false,依此类推。

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

  4. 您也可以使用“alpha”,例如:

    myButton.alpha = 0

作为控制可见性的另一种方式。 0 会将 alpha 设置为 none(这将使按钮不可见),1 会将 alpha 设置为 full(这将使按钮再次可见。)

  1. 在您设置隐藏(或 alpha)后立即放入: println("我把按钮藏起来了!") 只是为了确保您认为您正在执行的代码确实正在执行。有时我们认为不起作用的代码实际上甚至没有被调用。

请提供更多信息,我很乐意为您解决这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多