动画SpriteKit中更改的数字

时间:2016-02-16 02:07:51

标签: swift sprite-kit sklabelnode

我正在使用SwiftSpriteKit。 我想要一个数字例如从20改为10.我希望在改变时显示数字的变化。更具体地说,我希望19秒显示0.1秒,18秒显示0.1秒,依此类推。无论如何我无法做到这一点。要添加的一件事:数字20和数字10可以随时不同,因此代码不应该只适用于那些特定的数字但是,我找到了更改文本的代码:

var counterNumber = 20
var label = SKSpriteLabel()
//...
label.text = "\(counterNumber)"
label.fontName = "Helvetica Neue"
label.fontSize = 30
label.fontColor = SKColor.blackColor()
//...
counterNumber = 10
label.text = "\(counterNumber)"

提前致谢... Anton

2 个答案:

答案 0 :(得分:1)

您可以使用update中的SKScene功能。它有一个参数 - 当前时间。使用它(可能是场景加载时设置的开始时间),您可以知道场景中已经过了多少时间。然后,只需更新您的标签就可以了,就像您已经展示过一样。

答案 1 :(得分:0)

我找到了答案:

var counterNumber = 20
var counterLabel = SKLabelNode()

override func didMoveToView(view: SKView) {
    /* Setup your scene here */

    counterLabel.text = "\(counterNumber)"
    counterLabel.fontName = "Helvetica Neue"
    counterLabel.fontSize = 100
    counterLabel.fontColor = SKColor.blackColor()
    counterLabel.position = CGPoint(x: self.frame.width / 2, y: self.frame.height / 2)
    self.addChild(counterLabel)


}

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
   /* Called when a touch begins */

    let wait = SKAction.waitForDuration(0.5)
    let block = SKAction.runBlock({

        self.counterNumber = self.counterNumber - 1
        self.counterLabel.text = "\(self.counterNumber)"

    })

    let sequence = SKAction.sequence([wait, block])

    counterLabel.runAction(SKAction.repeatAction(sequence, count: 10))


}