効果のデモンストレーション: メインJSコード実装 <div class="box" id="bb"> <canvas id="cas" width="1366" height="651"></canvas> </div> <script type="text/javascript" charset="utf-8"> var キャンバス = document.getElementById("cas"), ctx = キャンバス.getContext("2d"); var x1, y1, a = 30, タイムアウト、totimes = 100、 江下 = 30; キャンバスの幅 = document.getElementById("bb").clientWidth; キャンバスの高さ = document.getElementById("bb").clientHeight; var img = 新しい画像(); 画像を拡大 img.onload = 関数() { ctx.drawImage(画像, 0, 0, キャンバス.幅, キャンバス.高さ) //ctx.fillRect(0,0,キャンバス.幅,キャンバス) タップクリップ() } //globalCompositeOperation関数tapClip()を変更して消去効果を実現します。 var hastouch = "ontouchstart" in window ? true : false, tapstart = hastouch ? "touchstart" : "mousedown", tapmove = hastouch ? "touchmove" : "mousemove", tapend = hastouch ? "touchend" : "mouseup"; ctx.lineCap = "丸い"; ctx.lineJoin = "丸め"; ctx.lineWidth = a * 2; ctx.globalCompositeOperation = "destination-out"; canvas.addEventListener(tapstart, 関数(e) { clearTimeout(タイムアウト) e.preventDefault(); x1 = hastouch ? e.targetTouches[0].pageX : e.clientX - canvas.offsetLeft; y1 = hastouch ? e.targetTouches[0].pageY : e.clientY - canvas.offsetTop; ctx.save(); ctx.beginPath() ctx.arc(x1, y1, 1, 0, 2 * Math.PI); ctx.fill(); ctx.restore(); キャンバスにイベントリスナーを追加します。 canvas.addEventListener(tapend, 関数() { キャンバスのtapmoveイベントリスナーを削除します。 タイムアウト = setTimeout(関数() { var imgData = ctx.getImageData(0, 0, canvas.width, canvas.height); var dd = 0; (var x = 0; x < imgData.width; x += jiange) { (var y = 0; y < imgData.height; y += jiange) { var i = (y * imgData.width + x) * 4; (imgData.data[i + 3] > 0)の場合{ dd++ } } } (dd / (imgData.width * imgData.height / (jiange * jiange))< 0.4)の場合{ キャンバス.className = "noOp"; } }, トゥタイムズ) }); キャンバスにイベントリスナーを追加します。 canvas.addEventListener(tapend, 関数() { キャンバスのtapmoveイベントリスナーを削除します。 タイムアウト = setTimeout(関数() { var imgData = ctx.getImageData(0, 0, canvas.width, canvas.height); var dd = 0; (var x = 0; x < imgData.width; x += jiange) { (var y = 0; y < imgData.height; y += jiange) { var i = (y * imgData.width + x) * 4; (imgData.data[i + 3] > 0)の場合{ dd++ } } } }, トゥタイムズ) }); } </スクリプト> <script type="text/javascript"> ウィンドウ.setTimeout('CountDown()', 100); // 終わり </スクリプト> 上記は、JS を使用してキャンバスを PS 消しゴム スクラッチ カードに似せる効果を実現する方法の詳細な内容です。JS の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
>>: HTMLテキストボックス(テキスト)は、読み取り専用を実現するために複数の方法で利用できません
1: django-admin.py startproject プロジェクト名2: cd プロジェク...
1. 環境整備Tencent Cloud Server CENTOS 7 バージョンDockerコン...
最近 Linux を研究していて、いくつかの Linux ディストリビューションを試してみましたが、...
目次day.js を使用する理由モーメントデイ.js day.js がなければどうなるでしょうか? ...
1. 前提条件1. プロジェクトが展開されました2. Dockerはすでにインストールされている2...
この記事では、React Native の基本をすでに理解していることを前提とし、ネイティブと Ja...
文章さて、次はレンダリングを見せましょう。画像を見て初めて理解することに興味が湧くでしょう。そうでな...
みなさんこんにちは。今日はカルーセルの実装についてお話しします。私が作成したカルーセルの効果は次のと...
1. 永続的な統計情報の重要性:統計は、MySQL が実行プランを生成するためのガイドとして使用され...
序文この記事では主に、MySQLに大量のデータを挿入する4つの方法を紹介し、参考と学習のために共有し...
ネットワーク データを読み込むときは、ユーザー エクスペリエンスを向上させるために、通常は円形の読み...
UDP の理論については詳しく説明しません。UDP に関する HelloWorld プログラムを紹介...
今週は戦争のように忙しかったです。他人に操られているような気がします。毎日朝早く出勤して夜遅く帰り、...
Like は中国語で「好き」を意味しますが、MySQL データベースに適用される場合、Like は、...
HTML のヘッド部分には、ブラウザによる Web ページのレンダリングや SEO などに関連するタ...