Имам сцена на игра, която се състои от анимации, които се появяват в синхрон със съдържанието на песен. Едно от действията, които се опитвам да настроя, е във връзка с текста на песента, който се показва с помощта на SKLabelNode. Това, което искам да направя, е да превключвам между две анимации въз основа на това дали има или не герои в LabelNode (певецът спира да "пее" и чака). Имам това в метода за актуализиране:
var singerActive = false
var lyricsLabel = SKLabelNode()
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
if lyricsLabel.text?.characters.count == 0{
singerActive = false
}else{
singerActive = true
}
let sings = SKAction.runBlock { () -> Void in
self.singer.runAction(SKAction.fadeAlphaTo(1, duration: 0.1))
self.singerIdle.runAction(SKAction.fadeAlphaTo(0, duration: 0.1))
}
let singerInactive = SKAction.runBlock { () -> Void in
self.singer.runAction(SKAction.fadeAlphaTo(0, duration: 0.1))
self.singerIdle.runAction(SKAction.fadeAlphaTo(1, duration: 0.1))
}
var stopper = true
if singerActive && stopper{
stopper = false
singer.runAction(sings)
}
if singerActive == false && stopper == false{
stopper = true
singer.runAction(singerInactive)
}
}
За съжаление това изглежда не работи. Активното състояние на певец работи, но неактивното състояние не успява да се задейства, когато броят на символите е == 0. Сложих булетата "стопер" там, за да гарантирам, че SKAction няма да се извиква непрекъснато, както е в метода за актуализиране. Аз съм сравнително нов в Swift и SpriteKit, така че всяка помощ ще бъде много оценена.