2016-02-19 3 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.

По вопросу, ул может быть «power0008» или любую текстуру, которая в настоящее время применяется в тот момент, когда powerBar.paused = true запускается.
Поскольку общее количество изображений известно, знание текущего имени текстуры поможет получить прогресс или процент воспроизведения анимации.

Смежные вопросы