У меня есть игровая сцена, состоящая из анимаций, происходящих синхронно с содержанием песни. Одно из действий, которое я пытаюсь настроить, относится к тексту песни, который отображается с помощью 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. Я поместил туда логическое значение «stopper», чтобы гарантировать, что SKAction не будет вызываться постоянно, как в методе обновления. Я новичок в Swift и SpriteKit, поэтому любая помощь будет очень признательна.