获取动画进度 - SpriteKit SKAction
Get progress of an animation - SpriteKit SKAction
以下代码运行图像序列。
let powerBar:SKSpriteNode = SKSpriteNode()
func animate(){
var textures:[SKTexture] = []
for i in 1...30 {
textures.append(SKTexture(imageNamed: "power\(String(format: "%04d", i))"))
}
let animation = SKAction.animateWithTextures(textures, timePerFrame: 0.03)
powerBar.runAction(animation)
}
if 那么动画被下面的代码停止了
powerBar.paused = true
有没有办法知道动画在哪一刻停止,也许以整个动画的百分比形式?
背景:我正在开发一个简单的游戏。用户可以通过点击启动和点击停止移动的电源条来设置点火功率。这就是为什么我需要知道动画的进度。想法、想法?
这是我最终采用的方法,虽然丑陋,但有效
假设:动画的图像总数已知
首先,我对 NSString
进行了扩展
extension NSString{
func stringWithinCharPairs(str:String, char:String) -> String{
let range = str.rangeOfString(char)!
let str2 = str.substringFromIndex(range.endIndex)
let range2 = str2.rangeOfString("'")
return str2.substringToIndex(range2!.startIndex)
}
}
这里我利用了powerBar.texture!.description
属性。
它会 return 类似于 "<SKTexture> 'power0008' (120 x 120)"
var str:NSString = NSString(string: powerBar.texture!.description)
str = str.stringWithinCharPairs(str as String, char: "'")
此处 str 将为您提供给定 SKSpriteNode 的 imageNamed 纹理。
根据问题,str 可以是“power0008”或在 [=14 时应用的任何纹理=] 是 运行.
因为图像的总数是已知的,所以知道纹理的当前名称将有助于获取动画播放的进度或百分比。
以下代码运行图像序列。
let powerBar:SKSpriteNode = SKSpriteNode()
func animate(){
var textures:[SKTexture] = []
for i in 1...30 {
textures.append(SKTexture(imageNamed: "power\(String(format: "%04d", i))"))
}
let animation = SKAction.animateWithTextures(textures, timePerFrame: 0.03)
powerBar.runAction(animation)
}
if 那么动画被下面的代码停止了
powerBar.paused = true
有没有办法知道动画在哪一刻停止,也许以整个动画的百分比形式?
背景:我正在开发一个简单的游戏。用户可以通过点击启动和点击停止移动的电源条来设置点火功率。这就是为什么我需要知道动画的进度。想法、想法?
这是我最终采用的方法,虽然丑陋,但有效
假设:动画的图像总数已知
首先,我对 NSString
进行了扩展extension NSString{
func stringWithinCharPairs(str:String, char:String) -> String{
let range = str.rangeOfString(char)!
let str2 = str.substringFromIndex(range.endIndex)
let range2 = str2.rangeOfString("'")
return str2.substringToIndex(range2!.startIndex)
}
}
这里我利用了powerBar.texture!.description
属性。
它会 return 类似于 "<SKTexture> 'power0008' (120 x 120)"
var str:NSString = NSString(string: powerBar.texture!.description)
str = str.stringWithinCharPairs(str as String, char: "'")
此处 str 将为您提供给定 SKSpriteNode 的 imageNamed 纹理。
根据问题,str 可以是“power0008”或在 [=14 时应用的任何纹理=] 是 运行.
因为图像的总数是已知的,所以知道纹理的当前名称将有助于获取动画播放的进度或百分比。