キャンバスはスクラッチカード効果を描画します

キャンバスはスクラッチカード効果を描画します

この記事では、キャンバスでスクラッチカード効果を描画するための具体的なコードを参考までに共有します。具体的な内容は次のとおりです。

最初の写真

コード

<!DOCTYPE html>
<html>
<ヘッド>
 <meta name="keywords" content="Feng Wu Hong Feng、フロントエンドテクノロジー、キャンバス"/>
 <meta name="description" content="Fengwu Hongfeng、フロントエンド技術、Canvas、Vue、React、Node、個人ブログ"/>
 <メタ文字セット="utf-8">
 <title>スクラッチカード</title>
 <link rel="icon" href="../image/icon2.ico" >
 <スタイル タイプ="text/css">
 *{マージン:0;パディング:0;}
 html、本文{高さ:100%;}
 本文{オーバーフロー:hidden;}
 div{位置:絶対;左:0;右:0;上:0;下:0;余白:自動;幅:300px;高さ:150px;テキスト配置:中央;行の高さ:150px;背景:rgb(200,0,0);色:rgb(255,255,255);フォントサイズ:22px;}
 キャンバス{表示: ブロック;位置: 絶対;左: 0;右: 0;上: 0;下: 0;マージン: 自動;フィルター: ぼかし(0.7px);}
 </スタイル>
</head>
<本文>
 <div></div>
 <キャンバス></キャンバス>
</本文>
<script type="text/javascript">
 タグ名で要素を取得する
 var キャンバス = document.getElementsByTagName('キャンバス')[0];
 var コンテキスト = canvas.getContext("2d");

 var Jackpots = ["一等賞","二等賞","三等賞","四等賞","ボーナス賞"];
 //一等賞の確率 2% 二等賞の確率 6% 三等賞の確率 14% 四等賞の確率 30% ボーナス賞の確率 48%
 var ジャックポット = rand(0,49);
 if(ジャックポット == 0){
 div.innerHTML = ジャックポット[0];
 }そうでない場合(ジャックポット>0 && ジャックポット<4){
 div.innerHTML = ジャックポット[1];
 }そうでない場合(ジャックポット>3 && ジャックポット<11){
 div.innerHTML = ジャックポット[2];
 }そうでない場合(ジャックポット>10 && ジャックポット<26){
 div.innerHTML = ジャックポット[3];
 }それ以外{
 div.innerHTML = ジャックポット[4];
 }

 コンテキスト.beginPath();
 context.fillStyle = "rgb(200,200,200)"
 コンテキストを0,0に移動します。
 コンテキスト.lineTo(300,0);
 コンテキスト.lineTo(300,150);
 コンテキスト.lineTo(0,150);
 コンテキスト.lineTo(0,0);
 コンテキストを埋め込む();
 コンテキスト.closePath();

 コンテキスト.beginPath();
 context.font = '30px Arial';
 context.fillStyle = "rgb(255,255,255)"
 context.fillText("スクラッチカード", 110, 90);
 コンテキストを埋め込む();
 コンテキスト.closePath();
 
 var fillColor = ["rgb(255,0,0,0.8)","rgb(255,255,0,0.8)","rgb(255,0,255,0.8)","rgb(0,255,255,0.8)"];
 (var i = 0;i<50;i++){
 コンテキスト.beginPath();
 コンテキストの塗りつぶしスタイル = fillColor[rand(0,3)];
 コンテキスト.arc(rand(20,280),rand(20,130),1,0,2*Math.PI);
 コンテキストを埋め込む();
 コンテキスト.closePath();
 }

 var フラグ = false;
 キャンバス.onmousedown = 関数(){
 フラグ = true;
 }

 キャンバス.onmouseup = 関数(){
 フラグ = false;
 }

 キャンバス.onmousemove = 関数(){
 if(フラグ){
 var e = イベント || window.event;
 var x = e.clientX - parseInt(div.offsetLeft);
 var y = e.clientY - parseInt(div.offsetTop);
 //コンソールログ(x,y);

 コンテキスト.beginPath();
 コンテキスト.arc(x,y,20,0,2*Math.PI);
 context.globalCompositeOperation="destination-out";
 コンテキストを埋め込む();
 コンテキスト.closePath();
 }
 }

 //nからmまでのランダムな整数 function rand(n,m){
 var c = m - n + 1;
 Math.floor(Math.random() * c + n) を返します。
 }
</スクリプト>
</html>

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

以下もご興味があるかもしれません:
  • キャンバスがスクラッチカード効果を実現
  • HTML5 Canvas を使用してスクラッチ カード効果を実現する
  • スクラッチカードの抽選効果を実現する JavaScript+canvas
  • jQuery は、eraser.js プラグインを使用して、カードを消去したり傷をつけたりする効果を実現します [eraser.js のダウンロードあり]
  • モバイル js および html5 スクラッチ カード効果
  • jsとhtml5はモバイルスクラッチカード宝くじ効果を実現し、android / IOSとの完璧な互換性があります

<<:  MySQL無料インストール版のパスワード設定に関する詳細なチュートリアル

>>:  mysql5.7.18.zip インストール不要版設定チュートリアル(Windows)

推薦する

mysql 5.7.11 winx64 初期パスワード変更

公式サイトからMySQL-5.7.11-winx64の圧縮版をダウンロード。インストール後、パスワー...

Navicat PremiumはMySQLデータベースを操作します(SQL文を実行します)

1. Navicatの紹介1. Navicat とは何ですか? Navicat は強力な MySQ...

div の水平レイアウトを両側に揃える 3 つの方法

この記事では、主に、div の水平レイアウトの両側の配置を実装する 3 つの方法を紹介し、それらを共...

JS 1次元配列を3次元配列に変換する例

今日、CSDN の Q&A セクションで友人が質問をしているのを見ました。彼は 1 次元配列...

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

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

Docker を使用して MySQL 5.7 および 8.0 マスター スレーブ クラスターをデプロイする方法

> MySQL 5.7 クラスタ マスターとスレーブをデプロイする (テストのみ)イメージバー...

jsvc を使用して tomcat を起動する方法 (通常のユーザーとして実行)

jsvc の紹介実稼働環境では、Tomcat はデーモン モードで実行する必要があります。Tomc...

Centos 7.4 サーバーの時刻同期設定方法 [NTP サービスに基づく]

この記事では、CentOS 7.4 サーバーで時刻同期を構成する方法について説明します。ご参考までに...

JavaScript のよりエレガントなエラー処理方法 async await

目次背景なぜエラー処理が必要なのでしょうか? async await より適切なエラー処理まとめ要約...

Vueはページを更新するために3つの方法を使用する

プロジェクトを作成しているときに、ユーザーがアクションを実行し、特定の状態を変更し、ページを更新して...

Docker Compose のサイドカーモードの詳細な説明

目次Docker Composeとは要件に不適切な言語が使用されている実装Docker Compos...

Vueスロットの詳細な説明

1. 機能: 親コンポーネントが子コンポーネントの指定された位置に HTML 構造を挿入できるように...

MySQL バイナリログデータ復旧: 誤ってデータベースを削除した場合の詳細な説明

MySQL Binログデータの回復: 誤ってデータベースを削除した場合前書き: テスト マシンで誤っ...

Azure Container Registry を使用してイメージを保存する際の問題

Azure Container Registry は、Docker Registry 2.0 仕様に...