前回は レーザービームのエフェクトをシミュレーション しましたが、今回は爆発のエフェクトをやってみることにします。

やることは単純で円を大きくして消滅させるだけです。ぼかしをつかって縁の色を変えたものを爆発発生地点の周囲に複数つくるといい感じになることがわかりました。各自でよさそうな値を見つけてくだされば・・・。

HTML部分

HTML部分を示します。

レスポンシブウェブデザインにしています。ディスプレイの幅が広いとcol-2はcol-1の右に、狭いと下に表示されます。

style.css

スマホのようにディスプレイの幅が狭い場合はcol-1とcol-2を縦に並べます。

style-mobile.css

グローバル変数と定数

グローバル変数と定数を示します。

index.js

Sparkクラスの定義

火球状態を更新して描画するためにSparkクラスを定義します。

ページが読み込まれたときの処理

ページが読み込まれたときの処理を示します。

canvasのサイズを調整してイベントリスナを追加して更新処理を開始します。

レンジスライダーを操作したら設定の値を変更してその値を項目の近くに表示させます。

HTMLからレンジスライダーに関する情報を読み取り、値の表示と操作用のボタンの表示、イベントリスナの追加をおこないます。settingExplodeのキーとレンジスライダーのid、ボタンのidなどに規則性をもたせることで配列とループ文で簡単に終わらせます。

更新処理

更新の処理を示します。

canvas全体を黒で塗りつぶして火球を更新して描画します。

爆発を発生させる

爆発を発生させる処理を示します。

最初に効果音を再生します。セレクトボックスからどの効果音が選択されているのかを調べてAudioオブジェクトを生成します。そのあとvolumeを設定して効果音を再生します。

爆発させるときは火球は何個生成するのか?そのさい時間はどれだけズラすのか?爆発の中心点からどれくらい離れたところに火球を生成するのか?が問題になります。下記コードではそれらの値をsettingExplodeオブジェクトから取得して処理をおこなっています。