2016-02-19 64 views
-1

以下代码运行一系列图像。获取动画的进度 - 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) 
} 

如果那么动画是由下面的代码

powerBar.paused = true 

有没有办法知道在哪一刻动画停止,也许在整个动画的百分比的形式停止?

背景:我正在一个简单的游戏。用户可以通过点击开始和敲击停止移动电源杆来设置点火功率。这就是为什么我需要知道动画的进展。想法,想法?

回答

0

这里是办法,我终于做,它的丑陋,但它的工作原理

假设:图像的动画被称为

首先总数,我做了一个扩展的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属性。
这将返回类似"<SKTexture> 'power0008' (120 x 120)"

var str:NSString = NSString(string: powerBar.texture!.description) 
str = str.stringWithinCharPairs(str as String, char: "'") 

这里海峡会给你imageNamed纹理为给定SKSpriteNode的

据的问题,STR可以是“power0008”或者是在其中powerBar.paused = true运行的时刻被施加任何纹理。
由于图像的总数是已知的,知道纹理的当前名称将有助于获取动画的进度或百分比。