JS+Canvas が抽選ホイールを引く

JS+Canvas が抽選ホイールを引く

この記事では、宝くじターンテーブルを描画するJS + Canvasの具体的なコードを参考までに共有します。具体的な内容は次のとおりです。

Canvas で描いたターンテーブルを使ったラッキーくじを皆さんにシェアしたいと思います。スイッチをクリックしてターンテーブルを起動すると、ターンテーブルが回転し始めます。ターンテーブルが停止すると、ポインターで指した領域が抽選された賞品となり、ターンテーブルの中央に表示されます。効果は次のとおりです。

アニメーションコードは次のとおりです。

<!DOCTYPE html>
<html>
 
<ヘッド>
    <スタイル>
        キャンバス {
            背景: #eee;
        }
    </スタイル>
    <title>キャンバスがラッキードローホイールを引きます</title>
    <スクリプト>
        window.onload = 関数(){
            var キャンバス = document.getElementById("キャンバス");
            var cobj = canvas.getContext("2d");
            var btn = document.getElementById("btn");
            var num = Math.PI / 180;
            cobj.translate(250, 250);
            var colorArr = ["#24a274", "#2a70a6", "#6d56c3", "#b23880", "#7a9a36", "#b48548", "#397839", "#89489c"];
            var textArr = ["js", "html", "css", "php", "mysql", "node", "flutter", "java"];
            var 角度 = 0;
            btn.onclick = 関数(){
                場所を再読み込みします。
            };
            var ステップ = 10 + 10 * Math.random();
            var t = setInterval(関数() {
                (ステップ <= 0.3) の場合 {
                    クリア間隔(t);
                    var num1 = Math.ceil(角度 / 45);
                    var con = textArr[textArr.length - num1];
                    cobj.font = "18px サンセリフ";
                    cobj.textAlign = "中央";
                    cobj.fillText(con, 0, 0);
                } それ以外 {
                    角度 >= 360 の場合
                        角度 = 0;
                    }
                    ステップ * = 0.95;
                    角度 += ステップ;
                    cobj.clearRect(-200, -200, 500, 500);
                    cobj.beginPath();
                    cobj.lineWidth = 5;
                    cobj.moveTo(135, 0);
                    150 行目から 0 行目までの範囲を 0 に設定します。
                    cobj.stroke();
                    cobj.lineWidth = 2;
                    cobj.save();
                    cobj.rotate(角度 * 数値);
 
                    (var i = 1; i <= 8; i++) の場合 {
                        cobj.beginPath();
                        cobj.moveTo(0, 0);
                        cobj.fillStyle = colorArr[i - 1];
                        cobj.arc(0, 0, 130, (i - 1) * 45 * num, i * 45 * num);
                        cobj.closePath();
                        cobj.stroke();
                        埋め込み
                    }
 
 
                    cobj.beginPath();
                    cobj.fillStyle = "#fff";
                    cobj.arc(0, 0, 60, 0, 2 * Math.PI);
                    埋め込み
 
 
                    (var i = 0; i < 8; i++) の場合 {
                        cobj.save();
                        cobj.beginPath();
                        cobj.rotate((i * 45 + 20) * num);
                        cobj.fillStyle = "#222";
                        cobj.font = "18px サンセリフ";
                        テキストをテキストエリアに埋め込む
                        cobj.restore();
                    }
                    cobj.restore();
                }
            }, 60)
        }
    </スクリプト>
</head>
 
<本文>
    <キャンバスid="キャンバス" 幅=500 高さ=500></キャンバス>
    <input type="button" value="開始" id="btn" />
</本文>
 
</html>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • js+ca​​nvas でターンテーブル効果を実現(2 つのバージョン)
  • js宝くじターンテーブル実装方法の分析
  • Vue.js 大ターンテーブル抽選会の概要と実装アイデア
  • JS はシンプルな宝くじターンテーブル効果の例を実装します
  • jquery.rotate.js は、オプションの抽選番号と当選内容を含むターンテーブルの抽選コードを実装します。
  • Javascript を使用してシンプルなホイール宝くじを実装する
  • js HTML5 Canvas はターンテーブルで抽選を行います
  • JavaScript+HTML5 Canvas がターンテーブルで抽選を行います
  • JavaScript に基づいて Jiugongge ターンテーブルの効果を実現する
  • js で大きなターンテーブル宝くじゲームの例を実現

<<:  HTML マークアップ言語 - テーブルタグ

>>:  Dockerにおけるオーバーレイネットワークの詳細な説明

推薦する

Vueの子コンポーネントが親コンポーネントのメソッドを呼び出す場合の詳細な説明

1. 子コンポーネントのthis.$parent.eventを通じて親コンポーネントメソッドを直接呼...

vue+element を使用した Google プラグインの開発プロセス全体

シンプルな機能: ブラウザの右上隅にあるプラグイン アイコンをクリックすると小さなポップアップ ウィ...

MySQL 8.0.18 のインストールと設定方法のグラフィック チュートリアル (Linux)

この記事では、Linux MySQL 8.0.18のインストールと設定のグラフィックチュートリアルを...

HTML テーブル マークアップ チュートリアル (28): セルの境界線の色属性 BORDERCOLOR

テーブルを美しくするために、セルごとに異なる境界線の色を設定できます。基本的な構文<TD 境界...

CSSを使用して中央に固定された2つの列と適応型列を実現する方法

1. 絶対位置とマージンを使用するこの方法の原則は、左側と右側をドキュメントの流れから外れるように配...

CSSにおけるマージン値と垂直マージンの重なりについて

平行ボックスの余白 (二重余白の重なり) に関する面接の質問: 1 つのボックスに上余白があり、もう...

Tomcatでcatalina.batがUTF-8に設定されている場合、コンソールに文字化けした文字が表示されます

1. catalina.bat は UTF-8 に設定する必要があります。UTF-8 に設定しないと...

CnBlogs カスタムブログスタイルの共有

半夜かけてようやくブログのスタイルを大体完成させることができました。ブログ全体が青を基調としていて、...

フレームウィンドウ間の関連付けとハイパーリンクのターゲット属性の使用を実装する方法

フレーム ウィンドウの関連付けを実現するには、次に示すように、ハイパーリンクの「ターゲット」ウィンド...

Dockerを使用してElasticsearchクラスターを素早くデプロイする方法

この記事では、 Dockerコンテナ ( docker-composeを使用してオーケストレーション...

CSS で要素を中央揃えにする N 通りの方法

目次序文インライン要素の中央揃えテキストを垂直に中央揃え要素を水平方向に中央揃えにするブロックレベル...

ソースコードから、Vue2がデータとメソッドを直接取得できる理由がわかる

目次1. 例: これはデータとメソッドを直接取得できます2. 環境を準備し、ソースコードをデバッグし...

見落としがちなMySQLのCOLLATIONの例の詳細な説明

序文MySQL データベースの文字列型は、CHAR、VARCHAR、BINARY、BLOB、TEXT...

MySQL 同時実行制御の原則に関する知識ポイント

Mysql は、高性能なデータ ストレージ サービスを提供する主流のオープン ソース リレーショナル...

Python Django アプリケーションを Docker 化する方法

Docker は、開発者やシステム管理者がアプリケーションを軽量コンテナとして構築およびパッケージ化...