HTML5 Canvas を使用したクールなビッグウェーブ進捗グラフエフェクトの例 (デモ付き)
この記事では、HTML5 Canvas のクールなビッグウェーブ進捗グラフ効果を紹介します。詳細は次のとおりです:
上の図でわかるように、この記事は上記の効果を実現するためのものです。
AlloyTouch は最近、プルダウン更新によるクールなローディング効果を記述する必要があるためです。したがって、大きな波の進行図が好まれます。
まず、Big Wave Picture Progress コンポーネントをカプセル化する必要があります。基本的な原理は、Canvas を使用してベクター グラフィックスや画像素材を描画し、波の効果を合成することです。
quadraticCurveTo について
quadraticCurveTo() メソッドは、2 次ベジェ曲線を表す指定された制御点を使用して、現在のパスに点を追加します。
JavaScript構文:
context.quadraticCurveTo(cpx,cpy,x,y);
パラメータ値
cpx ベジェ制御点のx座標
cpy ベジェ制御点のy座標
x 終点のx座標
y 終了 点
の y 座標:
ctx.moveTo(20,20); ctx.quadraticCurveTo(20,100,200,20); ctx.stroke();
上記のコードを通じて 2 次ベジェ曲線を描くことができます。具体的な原理効果を以下の図に示します。
波を描くには
var waveWidth = 300, offset = 0, waveHeight = 8, waveCount = 5, startX = -100, startY = 208, progress = 0, progressStep = 1, d2 = waveWidth / waveCount, d = d2 / 2, hd = d / 2, c = document.getElementById("myCanvas"), ctx = c.getContext("2d"); function tick() { offset -= 5; progress += progressStep; if (progress > 220 || progress < 0) progressStep *= -1; if (-1 * offset === d2) offset = 0; ctx.clearRect(0, 0, c.width, c.height); ctx.beginPath(); var offsetY = startY - progress; ctx.moveTo(startX - offset, offsetY); for (var i = 0; i < waveCount; i++) { var dx = i * d2; var offsetX = dx + startX - offset; ctx.quadraticCurveTo(offsetX + hd, offsetY + waveHeight, offsetX + d, offsetY); ctx.quadraticCurveTo(offsetX + hd + d, offsetY - waveHeight, offsetX + d2, offsetY); } ctx.lineTo(startX + waveWidth, 300); ctx.lineTo(startX, 300); ctx.fill(); requestAnimationFrame(tick); } tick();
無限の動きで波を見ることができます:
ここで必要なのは、スイング補正画像を隠すために描画領域をキャンバスよりも大きくすることです。上記で使用されています。
コードを複製して、大きなキャンバスに描画してみると、理解できるでしょう。
ここでは、if (-1 offset === d2) offset = 0; によって無限ループが実装されています。
d2は波の山+波の谷の長さです。波の山+波の谷を経ると、また同じライフサイクルが始まりますが、これは0からスタートするのと同じなので、0にリセットすることができます。
globalCompositeOperation を理解する
globalCompositeOperation プロパティは、キャンバスに描画された色がキャンバス上に既にある色とどのように組み合わされるかを説明します。
ビッグ ウェーブの進行状況チャートの描画には、次のものが使用されます。
ctx.globalCompositeOperation = "destination-atop";
destination-atop 意味: キャンバス上の既存のコンテンツは、新しいグラフィックと重なる部分にのみ保持されます。新しい形状はコンテンツの後に描画されます。
もちろん、globalCompositeOperation にはここにリストされていない多くのオプションがありますが、クールなオーバーレイ効果を調整するために他のプロパティを設定してみることもできます。
全体的な実装
var img = new Image(); function tick() { ... ... ctx.fill(); ctx.globalCompositeOperation = "destination-atop"; ctx.drawImage(img, 0, 0); requestAnimationFrame(tick); } img.onload = function () { tick(); }; img.src = "asset/alloy.png";
コードをシンプルかつ直接的にするために、ここでローダーコードをカプセル化し、イメージをロードするために新しい Image を介して src を直接設定する必要はありません。
ベクター画像を描画した後、globalCompositeOperationを設定してからペンギン画像を描画します。描画順序を間違えてはいけません。
最後に
サンプルのダウンロード: デモ
上記は、HTML5 Canvas のクールなビッグ ウェーブ進行チャート エフェクトのサンプル (デモ付き) の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www. php.cn)!

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









HTML の表の境界線に関するガイド。ここでは、HTML でのテーブルの境界線の例を示しながら、テーブル境界線を定義する複数の方法について説明します。

HTML マージン左のガイド。ここでは、HTML margin-left の概要とその例、およびそのコード実装について説明します。

これは、HTML でのネストされたテーブルのガイドです。ここでは、テーブル内にテーブルを作成する方法をそれぞれの例とともに説明します。

HTML テーブル レイアウトのガイド。ここでは、HTML テーブル レイアウトの値と例および出力について詳しく説明します。

HTML 入力プレースホルダーのガイド。ここでは、コードと出力とともに HTML 入力プレースホルダーの例について説明します。

HTML でのテキストの移動に関するガイド。ここでは、概要、マーキー タグが構文でどのように機能するか、および実装例について説明します。

HTML オンクリック ボタンのガイド。ここでは、それらの紹介、動作、例、およびさまざまなイベントでの onclick イベントについてそれぞれ説明します。
