この記事では、キャンバスでスクラッチカード効果を描画するための具体的なコードを参考までに共有します。具体的な内容は次のとおりです。 最初の写真 コード <!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)
目次【コード背景】 【コード実装】 #1# -> コード再利用の基本は、再利用可能なコンポーネ...
1. 引き続き PHP スクリプトを使用して実行します。コマンドラインに入力: php /home/...
目次1. HTML5のテンプレートタグ2. テンプレートタグ操作のプロパティとメソッド3. Vueの...
効果画像: 1. ファイルをインポートする<script src="js/jquer...
1. インストールヒント: 現在、VUE3.0 の公式翻訳ドキュメントはありません。しかし、すでに誰...
まず、状態マネージャーとは何か、そしてそれが何をするのかを知る必要があります。複数のページで同じプロ...
JavaScript厳密モードが 8 進数をサポートしていないという問題に関して、まず、 Java...
プライベート フィルターとグローバル フィルターのメソッドと概念は同じですが、プライベート フィルタ...
MySql データベースのサブクエリ:サブクエリ: 選択クエリ ステートメント内に別の選択ステートメ...
目次開始と停止データベース関連の操作データベーステーブル関連の操作制約関連デフォルトの制約高度なデー...
NGINX の全体的なアーキテクチャは、連携して動作する一連のプロセスによって特徴付けられます。メイ...
1. 理由新しいシステムに MySQL を再インストールする必要があったので、将来詳細を忘れた場合...
退屈していたので、突然角丸四角形の実装を思いつきました。しかし、私たちはこの話題についてあまりにも長...
Linux でパーティションのファイル システム タイプを確認する方法。パーティションのファイル シ...
最近のプロジェクトでは、テキストを垂直に揃えたいと考え、CSS の writing-mode プロパ...