効果のデモンストレーション: メイン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テキストボックス(テキスト)は、読み取り専用を実現するために複数の方法で利用できません
フロントエンド ページの需要が増加し続けるにつれて、一部のシーンではグラデーションの背景要素が必要に...
まず、コンテナが稼働している必要がありますコンテナのCONTAINER IDは、sudo docke...
Object.definePropertyの理解文法:オブジェクト.defineProperty(o...
目次原因:以下を実行します: 1. コンストラクター2.レンダリング機能3.bind関数とarrow...
html ¶ <html></html> html:xml ¶ <ht...
MySQL 8.0.3がリリースされます。新機能を見てみましょうMySQL 8.0.3 は RC ...
CSS には、一般的には使用されない 2 つの疑似クラス、before と :after があります...
<br />それぞれのトピックについて、チーム内でメールで議論します。議論が白熱するにつ...
序文単一障害点を解決するには、マスター/スレーブ ホット スタンバイ ソリューションを構成する必要が...
「読み取り専用」と「無効」はどちらも、ユーザーがフォーム フィールドの内容を変更できないようにします...
Redis は、ANSI C で記述されたオープンソースの NoSQL データベースであり、ネットワ...
今では多くの人がウェブサイト作成に参加していますが、ウェブサイトはどのように作成すればよいのでしょう...
目次1. 親コンポーネントが子コンポーネントに値を渡す(props) 2. サブコンポーネントは親コ...
1. 基本概念1. Sitemeshはページ装飾技術です。 1 : フィルターを通してページアクセス...
通常、清明節、国哀悼日、大地震の日、影響力のある偉人の死去または命日には、ウェブマスターとして、故人...