JavaScriptでルーレットをつくります。

画像を連続でズラしながら描画することでルーレットが動いているように見せているだけです。簡単にできるので初心者の方にやってみてほしいと思います。

HTML部分

ルーレットの画像が描画される部分だけcanvasを使っています。canvasのまわりにマージンを設定し、ルーレットの背景は黒、画像の背景は白でそれっぽくしています。

style.css

グローバル変数と定数

JavaScript部分のグローバル変数と定数を示します。

index.js

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

imagesフォルダのなかに 0.png ~ 5.png の6つがあるという前提で進めます。

まずcanvasのサイズを設定して、画像ファイルを読み込んでイメージを配列のなかに格納します。1番はじめの画像が読み込まれるのを待ってから、それを描画する処理をおこないます。またルーレットが動いていないのにストップボタンが表示されているのはおかしいので非表示にします。

index.js

ルーレットを回転させる処理

ルーレットを回転させる処理を示します。

スタートボタンを非表示にしてストップボタンを表示させます。ルーレットが停止しているフラグをクリアしてから回転速度を最大に、回転量を0で初期化します。そしてルーレットが回転しているあいだは0.01秒おきに描画処理をおこないます。

ルーレットの回転速度が最低速度まで下がり、ズレが最低速度より小さい場合はルーレットを止めます。ルーレットが停止しているフラグをセットしてスタートボタンの再表示させます。

ルーレットの回転している場合は2つのイメージをどの位置から描画するかを計算し、その位置に描画する処理をおこないます。そのあと回転総量に回転速度を追加する処理をおこないます。

停止する処理

ルーレットを停止させる処理を示します。

ルーレットは停止ボタンをクリックしたらすぐに停止するのではなく、回転速度がだんだん低下して停止するようにします。停止ボタンがクリックされたら回転速度を半分にしたあと、0.5秒おきに1減らします。これを回転速度が最低速度よりも大きい場合のみ繰り返します。stopedフラグがtrueになっている場合はすでにルーレットは停止しているのでclearInterval関数を呼び出してインターバルを削除します。