为 SpriteKit 中的数字变化设置动画
Animate a number changing in SpriteKit
我正在使用 Swift
和 SpriteKit
。
我想要一个数字从 20 变为 10。我想要在它改变时显示数字的变化。具体来说,我希望19显示0.1秒,18显示0.1秒,以此类推。
您可以在 SKScene
中使用 update
功能。它有一个参数——当前时间。使用它(也许还有场景加载时设置的开始时间),您可以知道场景中经过了多少时间。然后就像您已经展示的那样,只需更新您的标签即可。
我找到了答案:
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))
}
我正在使用 Swift
和 SpriteKit
。
我想要一个数字从 20 变为 10。我想要在它改变时显示数字的变化。具体来说,我希望19显示0.1秒,18显示0.1秒,以此类推。
您可以在 SKScene
中使用 update
功能。它有一个参数——当前时间。使用它(也许还有场景加载时设置的开始时间),您可以知道场景中经过了多少时间。然后就像您已经展示的那样,只需更新您的标签即可。
我找到了答案:
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))
}