SKLabelNode文本有两种不同的字体和颜色。这怎么可能?

时间:2015-02-05 23:52:52

标签: swift sprite-kit sklabelnode

我有SKLabelNode设置为显示分数变量,后跟高分变量

scoreLabel.text = "\(score)/\(classicHScoreInt)"

现在,一切都很好但我希望classicHScoreInt是一个较小的字体,也许是一个不同的颜色。这怎么可能?

classicHScoreInt是(如上所述)一个整数,因此score

1 个答案:

答案 0 :(得分:6)

您无法将两种字体设置为同一SKLabelNode实例。相反,您可以编写子类来创建自定义节点,该节点包含具有不同字体大小的多个SKLabelNodes。例如,您的scoreLabel可以是以下类的实例。

class ScoreLabel : SKNode
{
    var label : SKLabelNode!
    var scoreLabel : SKLabelNode!

    var score : Int = 0 {
        didSet
        {
            scoreLabel.text = "\(score)"
        }
    }

    override init() {
        super.init()
        label = SKLabelNode(text: "Score : ")
        label.position = CGPointMake(0, 0)
        label.fontSize = 20
        addChild(label)

        scoreLabel = SKLabelNode(text: "\(0)")
        scoreLabel.position = CGPointMake(label.frame.size.width , 0)
        scoreLabel.fontSize = 25
        addChild(scoreLabel)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

}

使用ScoreLabel

let scoreLabel = ScoreLabel()
scoreLabel.position = CGPointMake(100, 300)
scoreLabel.score = 10
self.addChild(scoreLabel)

ScoreLabel中的两个标签从外部充当单个SKNode。 可以在SKActions上执行ScoreLabel,它会同时影响child label nodes。例如

    scoreLabel.runAction(SKAction.scaleTo(2.0, duration: 2.0))

这会将两个标签一起缩放为一个单元。