2015-02-02 3 views
0

У меня есть несколько различных SKSpriteNodes, которые анимированы. Новые узлы появляются в непредсказуемые моменты во время игры, но я бы хотел, чтобы они появились с анимацией, синхронизированной с существующими узлами.Как я могу синхронизировать анимацию нескольких SKSpriteNodes?

В настоящее время я начала анимации с самого начала в Init(), выполнив одно из следующих действий:

func init() { 
    let textures = GlobalVariableTexturesArray 
    let animation = SKAction.animateWithTextures(...) 
    let repeat = SKAction.repeatActionForever(animation) 
    runAction(repeat) 
} 

Единственный способ, которым я могу думать, чтобы выполнить синхронизацию должен делать свою собственную математику и выяснить, ток кадр во время GameScene.update(). Затем примените эту текстуру ко всем моим узлам напрямую.

+2

на самом деле, вы должны анимировать изменения текстуры вручную вместо использования действий – LearnCocos2D

ответ

1

В методе обновления для сцены вам нужно будет вручную установить текстуру для каждого спрайта в вопросе.

Это может быть близко. Это предполагает все узлы непосредственно на каком-то фоновый слой, и все ваши узлы соответствуют подклассу вы определили, который реализует метод setNextFrame:

-(void)update:(CFTimeInterval)currentTime { 

    [self.bgLayer enumerateChildNodesWithName:@"nodesNameToAnimate" usingBlock:^(SKNode *node, BOOL *stop) { 
     [(MySubClassedNode*)node setNextFrame:currentTime]; 
    }]; 
} 
+0

Это примерно то, что я делал. –

-1

Просто создайте родительский узел и запустите действие на этом узле. Затем вы можете новые узлы и они будут двигаться Синхрон:

var parentNode = SKNode() 

parentNode.addChild(child1) 
parentNode.addChild(child2) 

parentNode.runAction(yourAction) 
+0

, движущихся вместе, да, но вопрос был о анимации кадра/текстуры – LearnCocos2D

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