2014-04-29 4 views
0

J'essaie de rendre l'arrière-plan du flashBackground blanc. Comment puis-je faire cela en utilisant le kit sprite. J'ai créé le SKSpriteNode ci-dessous dont je voudrais flasher de clearcolor à whitecolor à clearcolor.backgorund couleur flash sprite kit

flashBackground = [SKSpriteNode spriteNodeWithColor:[SKColor clearColor] size: 
         CGSizeMake(self.size.width, self.size.height)]; 

[self addChild:flashBackground]; 

Répondre

-1

Je serais probablement juste utiliser un nœud blanc et animez il est alpha, mais c'est la préférence personnelle et n'a probablement pas d'incidence sur quoi que ce soit.

Pour animer la couleur d'un nœud, utilisez la méthode [SKAction colorizeWithColor: colorBlendFactor: duration:]. Dans votre cas, cela ressemblerait à ceci:

[flashBackground runAction:[SKAction sequence:@[[SKAction colorizeWithColor:[SKColor whiteColor] colorBlendFactor:1 duration:.1],[SKAction colorizeWithColor:[SKColor clearColor] colorBlendFactor:1 duration:.1]]]]; 

La version à base alpha de ce serait tout simplement commencer avec la couleur initiale fixée à whiteColor, flashBackground.alpha à 0, et exécuter:

[flashBackground runAction:[SKAction sequence:@[[SKAction fadeInWithDuration:.1],[SKAction fadeOutWithDuration:.1]]]]; 

ajuster les durées jusqu'à ce que vous obteniez l'effet désiré.

Vous pouvez également essayer de modifier le mode de fusion du noeud pour l'ajouter ou le multiplier, afin d'obtenir un effet de flash plus réaliste.

flashBackground.blendMode = SKBlendModeAdd; 
+0

Je ne sais pas comment les modes de fusion alternatifs traiteraient mélange clearColor dans la hiérarchie de dessin. N'hésitez pas à partager les résultats si vous essayez cela! – webbcode

2
SKAction *wait0 = [SKAction waitForDuration:1.0]; // 1 sec delay 

SKAction *block0 = [SKAction runBlock:^{ 
    flashBackground.color = [SKColor whiteColor]; 
}]; 

SKAction *block1 = [SKAction runBlock:^{ 
    flashBackground.color = [SKColor clearColor]; 
}]; 

[flashBackground runAction:[SKAction repeatActionForever:[SKAction sequence:@[wait0, block0, wait0, block1]]]]; 

ou pour changer une fois la dernière ligne:

[flashBackground runAction:[SKAction sequence:@[wait0, block0, wait0, block1]]]; 
Questions connexes