SKLabelNode文本使用iOS 7.1消失

时间:2014-10-08 10:52:01

标签: ios swift sprite-kit nstimer ios7.1

我写了一个名为updateLabel的函数来计算我收集的硬币。我使用NSTimer调用该函数来获得计数效果。

使用iOS 8一切都很好但是只要我使用iOS 7.1调用该功能,我的标签就会变成空白...如果我打印出Label.text,我会得到正确的数字,但它没有显示。即使是声音“coinSound”也能奏效。

scoreLabel = SKLabelNode()
scoreLabel.text = "0"
self.addChild(scoreLabel)           // shows up and works with "0"

self.timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self.self, selector: "updateLabel", userInfo: nil, repeats: true)



func updateLabel() {

    var score:Int = coinsCollected
    var current:Int = self.scoreLabel.text.toInt()!

    if (current < score) {

        current += 1
        scoreLabel.text = String(current)
        println("current: \(current) , labelText: \(scoreLabel.text)")    
        self.runAction(coinSound)                                         
    } else {
        timer.invalidate()
    }

}

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

标签是否是否会显示,或者只有在您尝试更新时才会显示空白?

如果是前一种情况,则可能是标签根本没有显示,而不仅仅是它没有更新文本。例如,当你不期望它时,它可能之后某个其他元素,它可能被渲染到你不期望的地方,它可能被渲染为零alpha或颜色与背景匹配(例如,白色为白色),或者它可能无法找到创建字形所需的信息(即,您可能正在使用该系统上不可用的字体)。

如果是后一种情况,则可能是您计算文本的方式存在问题。我注意到你做的事情有点奇怪 - 你通过获取当前文本的Int值,添加一个,然后再设置文本来获得“当前”值。这种方法的问题在于,如果永远在该字段中具有非整数值作为文本,那么您将永远打破该字段。更好的方法是保留一个Int变量,增加它,然后将字段的文本设置为。

您可以在这些案例之间进行测试,只需将该字段的文本设置为“1”或其他内容即可显示。如果可以显示静态文本成员,则可以移动到动态显示。但是如果没有显示静态文本,那么这意味着基于计时器的动态代码与问题无关。

要检查的一件事是您使用的是有效的字体名称。例如,“Arial”不是字体名称 - 您必须使用“ArialMT”。请确保您使用的是实际的字体名称。