ついに・・・この鳩でもわかるC#も更新1000回の日を迎えることになりました。大きな節目である1000回更新の記事として何をするか? そうだ、紙吹雪を表示するアプリをつくってみようと思って調べてみるとCanvas Confettiというライブラリが見つかりました。

紙吹雪を表示させるならCanvas Confetti一択?

使い方は驚くほど簡単です。

なんと <script src=”https://cdn.jsdelivr.net/npm/canvas-confetti@1.3.2/dist/confetti.browser.min.js”></script> を入れたあと、confetti();とやるだけです。実質たったの2行で紙吹雪の描画処理ができてしまうのです。

またオプションを指定することでさまざまな紙吹雪を生成することができます。

particleCountで紙吹雪の数を変更する

デフォルトだと実行時の紙吹雪の数は50です。particleCountで紙吹雪の数を変更することができます。

ticksで紙吹雪の数を変更する

またデフォルトの設定だと紙吹雪が表示されてから少し下に落ちると消えるようになっています。消えるタイミングを遅らせるためにはticksの値を大きくすればよいです。1000にすると途中で消えてしまうことはなくなります。

colorsで紙吹雪の色を指定する

colorsで紙吹雪の色を指定することができます。以下のコードだと赤、緑、青の3色だけの紙吹雪が生成されます。

spreadで紙吹雪が飛ぶ角度を変更する

spreadで紙吹雪が飛ぶ角度を変更することができます。30のように小さな値にすると紙吹雪がクラッカーを上に向けて発射したような飛び方をします。また360を指定すると打ち上げ花火のような紙吹雪になります。

その他

自分で生成したcanvas上で使いたいとき

画面全体ではなく特定のcanvasタグに描画する場合はcanvasタグにidを付けて以下のようにします。

Canvas Confettiのオプションをテストするアプリ

Canvas Confettiのオプションを変更してどのような紙吹雪が生成されるかテストするアプリを作ってみることにします。

HTML部分を示します。

グローバル変数と定数を示します。要素を定数に格納して値の取得と設定ができるようにしておきます。arr2はレンジスライダーのmin、max、step、valueです。arr3はレンジスライダーのvalueを表示させる部分の要素です。

index.js

ページが読み込まれたらレンジスライダーを初期化して値を設定します。またイベントリスナを追加してレンジスライダーのvalueが変更されたらその値を表示できるようにします。

index.js

[紙吹雪を生成する]ボタンがクリックされたらレンジスライダーからvalueを取得してオプションを指定してconfettiを実行します。