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

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

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

最初の写真

コード

<!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)

推薦する

WeChatアプレットがテキストスクロールを実装

この記事の例では、WeChatアプレットでテキストスクロールを実装するための具体的なコードを参考まで...

Vant+postcss-pxtoremはブラウザ適応機能を実装します

Remレイアウトの適応Vant のスタイルでは、デフォルトで px を単位として使用します。rem ...

Vue3 ドラッグ可能な左パネルと右パネルの分割コンポーネントの実装

目次コンポーネントの分解左パネル右パネル入力パラメータの分解小道具スロット具体的な実装ドラッグする方...

HTML の隠しフィールドの紹介と例

基本的な構文: <input type="hidden" name=&qu...

CentOS で yum を使用して rabbitmq-server をインストールする方法

RabbitMQをインストールする前にSocatをインストールする必要があります。そうしないと、Ra...

Centos8 の Django プロジェクトに nginx+uwsgi をデプロイするチュートリアル

1. 仮想環境virtualenvのインストール1. virtualenvをインストールするpip3...

MySQLのバックアップとリカバリの簡単な分析

目次1. はじめに2. バックアップとリカバリの簡単な定義3. 復旧計画で考慮すべきいくつかの要素4...

vue.js ベースの QQ チャット ルーム

目次導入効果のデモンストレーションは次のとおりです。 MChat コンポーネントのレンダリング: I...

権限の問題によりMySQLの設定ファイルmy.cnfを起動できない問題の解決方法

この記事では、権限の問題により MySQL 構成ファイル my.cnf を起動できない場合の関連する...

MySQL の左結合操作における on 条件と where 条件の違いの紹介

優先度両方のケースで同じ条件を設定すると、異なる結果セットが生成される可能性があるのは、優先順位のた...

Tomcat ディレクトリ構造の詳細な紹介

tomcat の解凍されたディレクトリを開くと、次のディレクトリ構造が表示されます。 1.Tomca...

Vue3とTypeScriptを組み合わせたプロジェクト開発の実践の概要

目次概要1. コンポジションAPI 1. ref と reactive の違いは何ですか? 2. 周...

Node はあいまい検索用の検索ボックスを実装します

この記事の例では、検索ボックスでファジークエリを実装するためのNodeの具体的なコードを参考までに共...

DockerToolBox ファイルマウント実装コード

docker を使用すると、ファイルをマウントできない場合があります。これは、仮想マシンの共有フォル...

有名なウェブサイトのロゴに使われている25種類のフォントのコレクション

この記事では、25 の有名な Web サイト (Google、Yahoo、Twitter、Digg ...