How to dissolve nodes in SpriteKit?

I have 2 SKSpriteNode objects, and I want to crossfade them. One of the easiest way is to create a fadeOut SKAction and a fadeIn SKAction, and apply them to the SKSpriteNode objects. But the problem of this approach is that during the action both of them have the alpha under 1.0, which looks not so good.

For example, I'd like to dissolve the red square SKNode to a green round SKNode

If just fade out the red square and fade in the green round during the action it'll look like this

So you can see background through these 2 objects. I hope to dissolve these 2 objects like this:

In UIKit I can use UIView.transitionWithView but in SpriteKit I only found a similar method for presenting scenes (SKViewObject.presentScene: transition:). So is there anyway to make a dissolve transition for SKNodes?


There's little you can about the background coming through when adjusting the alpha settings on both nodes. A possible hack could be to temporarily insert a solid node in front of your background but behind both other nodes until the action is done. At which point you remove it.

The node should be in the shape of both nodes cross-section (pardon the sloppy artwork on my part):