【问题标题】:Animate a number changing in SpriteKit在 SpriteKit 中为数字变化设置动画
【发布时间】:2016-02-16 02:07:51
【问题描述】:
我正在使用Swift 和SpriteKit。
例如,我想要一个数字从 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)"
提前谢谢...安东
【问题讨论】:
标签:
swift
sprite-kit
sklabelnode
【解决方案1】:
您可以在SKScene 中使用update 函数。它有一个参数——当前时间。使用它(可能是场景加载时设置的开始时间),您可以知道场景中已经过去了多少时间。然后就像您已经展示的那样,只需更新您的标签即可。
【解决方案2】:
我找到了答案:
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))
}