To snow lightly, the next coordinate of snow is defined by random. As well as y-coordinate, x-coordinate is defined by random.

The method that calls update method and draw method of SnowParticle class is update method of ChristmasCard class.

There are many snow flakes in the scene, so List object store the SnowParticle objects. If y-coordinate of SnowParticle object is bigger than height of Scene, the SnowParticle object is removed from List. When calling ChristmasCard#update method, SnowParticle object is created randomly.

When drawing to Canvas, we should paint the Canvas with transparency color at first, then draw snow.

Shape objects loaded from SVG file are divided into stroke and fill. Strokes and fills are animated separately.

There are 14 shapes (14 characters), so I used for loop to set animation. I didn't know that I wasn't able to add KeyValue objects to KeyFrame object after KeyFrame instanciation, because Set object gotten by KeyFrame#getValues was immutable.

Therefore, I make KeyFrame object in the loop, and then add the KeyFrame object to Timeline object.