この記事では、キャンバスでスクラッチカード効果を描画するための具体的なコードを参考までに共有します。具体的な内容は次のとおりです。 最初の写真 コード <!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 を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQL無料インストール版のパスワード設定に関する詳細なチュートリアル
>>: mysql5.7.18.zip インストール不要版設定チュートリアル(Windows)
この記事の例では、WeChatアプレットでテキストスクロールを実装するための具体的なコードを参考まで...
Remレイアウトの適応Vant のスタイルでは、デフォルトで px を単位として使用します。rem ...
目次コンポーネントの分解左パネル右パネル入力パラメータの分解小道具スロット具体的な実装ドラッグする方...
基本的な構文: <input type="hidden" name=&qu...
RabbitMQをインストールする前にSocatをインストールする必要があります。そうしないと、Ra...
1. 仮想環境virtualenvのインストール1. virtualenvをインストールするpip3...
目次1. はじめに2. バックアップとリカバリの簡単な定義3. 復旧計画で考慮すべきいくつかの要素4...
目次導入効果のデモンストレーションは次のとおりです。 MChat コンポーネントのレンダリング: I...
この記事では、権限の問題により MySQL 構成ファイル my.cnf を起動できない場合の関連する...
優先度両方のケースで同じ条件を設定すると、異なる結果セットが生成される可能性があるのは、優先順位のた...
tomcat の解凍されたディレクトリを開くと、次のディレクトリ構造が表示されます。 1.Tomca...
目次概要1. コンポジションAPI 1. ref と reactive の違いは何ですか? 2. 周...
この記事の例では、検索ボックスでファジークエリを実装するためのNodeの具体的なコードを参考までに共...
docker を使用すると、ファイルをマウントできない場合があります。これは、仮想マシンの共有フォル...
この記事では、25 の有名な Web サイト (Google、Yahoo、Twitter、Digg ...