この記事はJavaFX Advent Calendar25日目の記事です。
前回はs_kozakeさんのAndroidでJavaFXを動かしてみたよ!でした。

みなさんCanvas使ってますか?
使ってない人は今日から夢のCanvasライフを始めませんか?

ところで今日はクリスマスですね!

クリスマスらしく、クリスマスツリーでも見ましょう!
クリスマスツリー

というわけで今回はCanvasを使ってクリスマスツリーを作った話です。

完成品をおいておくのでぜひ触ってください。クリックした所に赤いライト置けます。

Canvasの使い方ですが、かなり簡単です。

Canvas canvas = new Canvas(CanvasWidth, CanvasHeight)
GraphicsContext g = canvas.getGraphicsContext2D();

g.fillOval(x, y, width, height);//○書くよ

のようにGraphicsContextを使って描画していくだけです。

Appletとかに似てるなーと思っていたんですが、Java2D作ってた人がCanvas作っていたみたいですね。
そりゃ似ているわけだ。

ライトや雪が落ちたりするアニメーションはAnimationTimerを使います。

AnimationTimer animationTimer = new AnimationTimer() {

    @Override
    public void handle(long now) {
        GraphicsContext g = canvas.getGraphicsContext2D();
        g.clearRect(0, 0, CanvasWidth, CanvasHeight);
        //背景
        drawSky(g);
        //星を描く
        drawStar(g, now);
        //木を描く
        drawTree(g);
        //ライトを描く
        drawLight(g, now);
        //雪を描く
        drawSnow(g, now);
    }
};
animationTimer.start();

あとは説明するものも特に無いので、コードをgistにおいておきます。
https://gist.github.com/orekyuu/afb416d5c722edeeb79e

最終日はskrbさんです!よろしくお願いします!