我想知道如何使按钮/标签出现并消失。当我的角色与对象碰撞时,按钮/标签将显示在视图上,游戏视图将不再起作用,只有出现的按钮/标签可以与之交互。
我已尝试过.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!"
}
答案 0 :(得分:3)
如果没有看到您的代码,这有点难以确定,但我建议如下:
确保已将按钮连接到Outlet变量。这很关键。如果不连接它们,您可以使用隐藏的布尔值,但它不会对实际按钮产生影响。
请确保您没有以某种方式撤消自己的更改。例如,在代码的下游,即使将其设置为true,也可能将某些设置隐藏为false,等等。
在某些情况下,您可能希望将出口变量设置为强而非弱。这可能会保留视图切换时丢失的更改。
您还可以使用&#34; alpha&#34;如:
myButton.alpha = 0
作为控制可见性的替代方法。 0会将alpha设置为none(这会使按钮不可见),1会将alpha设置为full(这会使按钮再次可见。)
请提供更多信息,我很乐意为您解决这个问题。