キャンバス構文の制限を突破し、チェーン構文をサポートさせます_html5 チュートリアル スキル
まず、通常のキャンバス描画構文を見てみましょう:
ctx.arc(centerX,centerY,radius,0,PI*2,true);
ctx.shadowColor = 'rgba(0,0,0,0.5)';
ctx.shadowBlur = "10" ;
ctx.fill();
ctx.beginPath();
ctx.shadowColor = 'rgba(0,0,0,0)';
ctx.moveTo( centerX-radius, centerY);
ctx.lineTo(centerX-radius,centerY - 50);
ctx.lineTo(centerX radius,centerY - 50);
ctx.lineTo(centerX radius,centerY) ;
// ctx.lineTo(centerX-radius,centerY);
ctx.fill();
ctx.beginPath();
ctx.fillStyle = 'rgba(255,0,0) ,1)' ;
ctx.arc(centerX,centerY-50,radius,0,PI*2,true);
ctx.fill();
私は違いますネイティブの Canvas 構文に満足しています。 ポイントは 2 つあります。1. 各文の前に ctx (つまり、canvas の context2d オブジェクト) が付いています。2. 各関数または属性が 1 行を占めており、スペースの無駄です。
次のような jQuery のチェーン構文にとても感謝しています。
$('#div1').show(300).html(p).delay(3000).slideUp(300).remove();
したがって、キャンバスの描画にもこの構文を使用したいと思います:
ctx.moveTo(500,0).lineTo(500,500).ストロークスタイル('#f00').ストローク();
1 つの方法は、 context2d オブジェクト、このオブジェクトはすべてのネイティブ context2d メソッドをサポートしますが、チェーンもサポートします。
ただし、コードが多すぎることはできません。そうしないと、誰も使いたくなくなります。
以下は、この「クラス」に XtendCanvas という名前を付けた完全なコード スニペットです (これも X で始まります):
// Ten Years Light のチェーン構文をキャンバスにサポートさせます
~function () {var pro = ['save ','restore'、'scale'、'rotate'、'translate'、'transform'、'createLinearGradient'、'createRadialGradient'、'getLineDash'、'clearRect'、'fillRect'、'beginPath'、'closePath'、 'moveTo'、'lineTo'、'quadraticCurveTo'、'bezierCurveTo'、'arcTo'、'rect'、'arc'、'fill'、'ストローク'、'クリップ'、'isPointInPath'、'measureText'、'clearShadow '、'fillText'、'ストロークテキスト'、'ストロークRect'、'drawImage'、'drawImageFromRect'、'putImageData'、'createPattern'、'createImageData'、'getImageData'、'lineWidth'、'ストロークスタイル'、'globalAlpha'、 'fillStyle','font','shadowOffsetX','shadowOffsetY','shadowBlur','shadowColor','lineCap','lineJoin','miterLimit'];
function XtendCanvas (canvas) {
var ctx = Canvas.getContext('2d'),
fn = function(){},
fnP = fn.prototype;
for(var j = 0,p=pro[0] ;p;p=pro[j ]) {
fn.prototype[p] = function (p) {
return function () {
var args = Array.prototype.slice.call(arguments) ;
// console.log(args);
if(typeof ctx[p] == '関数') {
ctx[p].apply(ctx,args);
} else {
ctx[p] = args '';
}
return fnP;
};
}(p);
}
return new fn;
通常の context2d と同じように使用できますが、チェーン構文がサポートされている点が異なります:
コードをコピー
この方法では、すべての操作を 1 つの文にまとめることができ、いつでも中断して他のことを行って続行することもできます。
このコードは Canvas の機能拡張ではなく、単にチェーン構文をサポートできるようにするだけです。ただし、コードが少なく、任意の JS ライブラリに埋め込むことができるという利点があります。ここで皆さんからの「推奨事項」を得ることができれば幸いです。
コードには改善する価値のある領域があるはずで、誰もがそれを改善できます。自分たちで。でも、水を飲むときは井戸掘りのことを忘れないでください。最も重要なのはアイデアですよね。アイデアは次のとおりです:
ご覧のとおり、コードの最も長い部分はメソッド名を格納する配列 pro ですが、コア コードは非常に短いです。なぜそのような配列を作成する必要があるのでしょうか?
当初、すべてのネイティブ メソッドを CanvasRenderingContext2D から直接継承したかったのですが、各ブラウザーでこの CanvasRenderingContext2D をトラバースすると、結果が一貫していませんでした。直接継承した場合、Chrome のメソッドを使用して Firefox で実行しようとすると、エラーが報告されます。
そこで、CanvasRenderingContext2D 内の一般的で問題のないメソッドとプロパティ名を抽出しました。固定配列を構築する以外に方法はありません。独自の判断でメソッドを追加できます。
メソッドとプロパティが抽出され、ネイティブ メソッドが新しいオブジェクトに追加されます。メソッドを配置するために fn という空の関数を作成しました。
配列内のこれらの要素は関数と属性の両方を持っているため、ループ内で関数であるかどうかを判断し、関数である場合はパラメーターを使用して実行します。属性である必要があります。この属性にパラメータを割り当てます。
この方法では、キャンバス属性を設定するときに、チェーンを中断する必要がなく、たとえば、
この段落では、匿名関数、クロージャ、プロトタイプ、および以前の記事で説明した奇妙な for ループが使用されています。
言うのはとても簡単ですが、皆さんのお役に立てれば幸いです。
コードを書く過程で、Chrome には setStrokeColor や setLineCap などの set で始まる一連の関数があり、それらにパラメータを渡すことで、次のことができることがわかりました。対応するストロークスタイルとラインキャップを置き換えます。属性を待っています。つまり、キャンバスは関数でいっぱいですが、属性がありません。その場合、それが関数であるか属性であるかを判断する必要はありません。しかし、Firefox にはそのようなものはないので、前のアイデアを使用するしかありません。
set 関数も解放しましょう:
最後に、なぜ私のコードが強調表示されないのか疑問に思います。 。 。最後までご覧になった方は、私も虚しくなってオススメを教えていただければと思います。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











H5プロジェクトを実行するには、次の手順が必要です。Webサーバー、node.js、開発ツールなどの必要なツールのインストール。開発環境の構築、プロジェクトフォルダーの作成、プロジェクトの初期化、コードの書き込み。開発サーバーを起動し、コマンドラインを使用してコマンドを実行します。ブラウザでプロジェクトをプレビューし、開発サーバーURLを入力します。プロジェクトの公開、コードの最適化、プロジェクトの展開、Webサーバーの構成のセットアップ。

H5ページの制作とは、HTML5、CSS3、JavaScriptなどのテクノロジーを使用したクロスプラットフォーム互換のWebページの作成を指します。そのコアは、ブラウザの解析コード、レンダリング構造、スタイル、インタラクティブ機能にあります。一般的なテクノロジーには、アニメーションエフェクト、レスポンシブデザイン、およびデータ相互作用が含まれます。エラーを回避するには、開発者をデバッグする必要があります。パフォーマンスの最適化とベストプラクティスには、画像形式の最適化、リクエスト削減、コード仕様などが含まれ、読み込み速度とコード品質を向上させます。

H5クリックアイコンを作成する手順には、次のものがあります。画像編集ソフトウェアで正方形のソース画像の準備が含まれます。 H5エディターにインタラクティブ性を追加し、クリックイベントを設定します。アイコン全体をカバーするホットスポットを作成します。ページにジャンプしたり、アニメーションのトリガーなど、クリックイベントのアクションを設定します。 HTML、CSS、およびJavaScriptファイルとしてH5ドキュメントをエクスポートします。エクスポートされたファイルをウェブサイトまたは他のプラットフォームに展開します。

H5はスタンドアロンプログラミング言語ではなく、最新のWebアプリケーションを構築するためのHTML5、CSS3、およびJavaScriptのコレクションです。 1。HTML5は、Webページの構造とコンテンツを定義し、新しいタグとAPIを提供します。 2。CSS3はスタイルとレイアウトを制御し、アニメーションなどの新しい機能を紹介します。 3. JavaScriptは動的な相互作用を実装し、DOM操作と非同期要求を通じて機能を強化します。

H5(HTML5)は、マーケティングキャンペーンページ、製品ディスプレイページ、企業プロモーションマイクロウェブサイトなどの軽量アプリケーションに適しています。その利点は、クロスプラットフォームと豊富な対話性にありますが、その制限は複雑な相互作用とアニメーション、ローカルリソースアクセス、オフライン機能にあります。

H5ReferStoHtml5、apivotaltechnologyinwebdevelopment.1)html5introduceSnewelementsandapisforrich、dynamicwebapplications.2)Itupp ortsmultimediawithoutplugins、endancingurexperiencecrossdevices.3)semanticelementsimprovecontentstructurendseo.4)H5'srespo

はい、H5ページの生産は、HTML、CSS、JavaScriptなどのコアテクノロジーを含むフロントエンド開発のための重要な実装方法です。開発者は、< canvas>の使用など、これらのテクノロジーを巧みに組み合わせることにより、動的で強力なH5ページを構築します。グラフィックを描画するタグまたはJavaScriptを使用して相互作用の動作を制御します。

H5ポップアップウィンドウの作成手順:1。トリガー方法(クリック、時間、終了、スクロール)を決定します。 2。設計コンテンツ(タイトル、テキスト、アクションボタン); 3。SETスタイル(サイズ、色、フォント、背景); 4.コードを実装する(HTML、CSS、JavaScript); 5。テストと展開。
