2014-10-08 51 views
3

消失,我寫了一個名爲updateLabel隨着時間的推移來算我的收集硬幣的功能。我使用NSTimer調用該函數來獲得增加計數的效果。SKLabelNode文字使用的是iOS 7.1

一切的偉大工程,使用的是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() 
    } 

} 

感謝您的幫助

+3

不要使用NSTimer! http://stackoverflow.com/a/23978854/201863 可能不是你的問題的來源,但我會修復它。 – LearnCocos2D 2014-10-08 12:52:27

+0

感謝您的信息。想到這個,最近試了一下。沒有解決我的問題後,我剛恢復我的舊NSTimer版本。 我一定會再次切換到動作。究竟是什麼好處?速度更快嗎?更高效? – MikeB 2014-10-08 16:10:49

+2

它在上面的鏈接中解釋過 – LearnCocos2D 2014-10-08 18:45:51

回答

0

是否標籤不斷表演,或者當您嘗試更新它它只是一片空白?

如果是前者的話,那麼它可能是標籤沒有顯示在所有的,不只是它沒有更新文本。例如,它可能是背後當你沒有想到吧,它可以被渲染的地方,你不要指望,它可以被渲染以零阿爾法或在背景相匹配的顏色一些其他的元素(例如白色),或者它可能無法找到創建字形所需的信息(即,您可能正在使用該系統中不可用的字體)。

如果是後一種情況下,它可能是與你是如何計算的文本問題。我注意到你正在做一些有點奇怪的事情 - 通過獲取當前文本的Int值,添加一個值,然後設置文本返回值來獲取「當前」值。這種方法的問題是,如果你有一個非整數值作爲該領域的文字,那麼你將永遠打破該領域。一個更好的方法是保持一個Int變量,增加它,然後設置字段的文本。

您可以在這些案例之間進行測試,只需將該字段的文本設置爲「1」或其他內容即可顯示。如果您可以顯示靜態文本成員,則可以移動到動態顯示。但是如果沒有顯示靜態文本,那意味着基於定時器的動態代碼與問題無關。

一件事是檢查你正在使用一個有效的字體名稱。 「Arial」不是字體名稱,例如 - 您必須使用「ArialMT」。確保你使用的是實際的字體名稱。