HTML5:現(xiàn)代のネットワークの礎(chǔ)。今日、SVGとキャンバスは、インタラクティブな畫像を作成するときに選択された技術(shù)であることがよくあります。フラッシュは忘れられており、シルバーライトはネットワークの端で珍しいユニコーンになり、サードパーティのプラグインを覚えている人はほとんどいません。
各手法の長(zhǎng)所と短所は十分に文書化されていますが、要するに、SVGはインタラクティブな要素の作成と処理に適しています。これは、SVGがXMLベースのベクトル形式であるため、畫像が<svg></svg>
タグを使用してページにロードされると、その中の各要素をSVG DOMで使用できるためです。
キーポイント
- GraphicsJSは、SVGに基づいた新しい強(qiáng)力なオープンソースJavaScript図面図書館であり、古いIEバージョンにVMLの代替品を提供します。それは軽量で柔軟で、リッチなJavaScript APIがあります。
- AnyChartによって公開された このライブラリは、AnyChartの獨(dú)自の製品で少なくとも3年間レンダリングされており、その堅(jiān)牢性を確保しています。 AnyChartのJavaScript Drawing Galleryとは異なり、GraphicsJSは商業(yè)および非営利のプロジェクトで無(wú)料で利用できます。
- GraphicsJSはクロスブラウザーの互換性であり、Internet Explorer 6.0、Safari 3.0、Firefox 3.0、およびOpera 9.5をサポートしています。これは、古いIEバージョンでVMLおよび他のすべてのブラウザでSVGでレンダリングされます。
- このライブラリは、アニメーション化されたbonき火、回転銀河、降雨、プレイ可能な15パズルゲームなど、グラフィックとアニメーションの組み合わせを可能にします。また、詳細(xì)なドキュメントと包括的なAPI參照も含まれています。
- GraphicsJSライブラリを使用して、レイヤー、グラデーション、パターン、イベント処理、パフォーマンスの最適化などのインタラクティブなWebアプリケーションを作成できます。また、複雑なアニメーションと変換をサポートしているため、開発者にとって多用途のオプションになります。
を選択する理由
開発者がSVG:rapha?l、snap.svg、およびbonsaijsを使用するのに役立つ多くのライブラリがあります。これらのライブラリにはそれぞれ長(zhǎng)所と短所がありますが、それらの徹底的な比較は別の記事の主題になります。この記事はGraphicsJSに関するものなので、それが何であり、何があるかを説明しましょう。
第二に、これは昨年秋にリリースされた新しいオープンソースJavaScriptライブラリであり、世界をリードするインタラクティブデータ視覚化ソフトウェア開発者の1人であるAnyChartによってリリースされました。 AnyChartはGraphicsJSを少なくとも3年間(AnyChart 7.0のリリース以來(lái))使用して獨(dú)自の製品にチャートをレンダリングしているため、GraphicsJSは完全に戦闘テストされています。 (免責(zé)事項(xiàng):私はAnyChartのR&Dの責(zé)任者であり、GraphicsJSのリード開発者です)
3番目に、AnyChartのJavaScript Drawing Libraryとは異なり、GraphicsJSは商業(yè)および非営利のプロジェクトで無(wú)料で利用できます。 Apacheライセンスの下でGithubで入手できます。4番目に、GraphicsJSにはクロスブラウザー互換性があり、Internet Explorer 6.0、Safari 3.0、Firefox 3.0、およびOpera 9.5をサポートしています。これは、古いIEバージョンでVMLおよび他のすべてのブラウザでSVGでレンダリングされます。
最後に、GraphicsJSを使用すると、グラフィックとアニメーションを完全に組み合わせることができます。アニメーションのbonき火、紡績(jī)銀河、降雨、手続き上の葉、プレイ可能な15パズルゲームなど、メインギャラリーをご覧ください。 GraphicsJSには、詳細(xì)なドキュメントと包括的なAPIリファレンスのより多くの例が含まれています。
GraphicsJS Basics
GraphicsJSを開始するには、ライブラリを參照して、図面のブロックレベルのHTML要素を作成する必要があります。
その後、ステージを作成して、長(zhǎng)方形、円、その他の形などの何かを描く必要があります。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>GraphicsJS Basic Example</title> </head> <body> <div id="stage-container" style="width: 400px; height: 375px;"></div> <??> <??> </body> </html>以下は、さらに一歩進(jìn)んで死の秘寶シンボルを描くCodepenの例です。
私たちの最初の傑作
// 創(chuàng)建舞臺(tái) var stage = acgraph.create('stage-container'); // 繪制矩形 var stage.rect(25, 50, 350, 300);
塗りつぶし、ストローク、パターンの塗りつぶし
任意の形狀またはパスは、塗りつぶし設(shè)定とストローク設(shè)定を使用して色付けできます。すべてにストローク(境界)がありますが、形狀と閉じたパスのみがパディングを持っています。充填およびストロークの設(shè)定は非常に豊富で、線形または円形の勾配を使用して塗りつぶしとストロークを使用できます。さらに、線に點(diǎn)在し、サポート畫像に複數(shù)のタイルモードが埋められます。しかし、これはほとんどすべてのライブラリで見つけることができるかなり標(biāo)準(zhǔn)的なものです。 GraphicsJSを特別なものにしているのは、メッシュとパターンの塗りつぶし機(jī)能です。これにより、32(?。─问褂每赡埭圣幞氓伐濂榨%毳靴咯`ンを直接使用できるだけでなく、形狀やテキストで作られたカスタムパターンを簡(jiǎn)単に作成できます。
さあ、正確に何を達(dá)成できるか見てみましょう!私は家の近くに立っている男の簡(jiǎn)単な絵を描き、それを強(qiáng)化するために異なるパターンと色でそれを満たします。簡(jiǎn)単にするために、それを幼稚な蕓術(shù)絵畫にしましょう(そして、蕓術(shù)の粗さを伴わないようにしてください)。それだけです:
Codepenで結(jié)果を表示します。
ご覧のとおり、変數(shù)を使用しています。ステージ上のコンテンツを描畫するすべての方法は、作成されたオブジェクトへの參照を返し、このリンクを使用してオブジェクトを変更または削除できます。
// 創(chuàng)建舞臺(tái) var stage = acgraph.create('stage-container'); // 繪制框架 var frame = stage.rect(25, 50, 350, 300); // 繪制房子 var walls = stage.rect(50, 250, 200, 100); var roof = stage.path() .moveTo(50, 250) .lineTo(150, 180) .lineTo(250, 250) .close(); // 繪制一個(gè)人 var head = stage.circle(330, 280, 10); var neck = stage.path().moveTo(330, 290).lineTo(330, 300); var kilt = stage.triangleUp(330, 320, 20); var rightLeg = stage.path().moveTo(320, 330).lineTo(320, 340); var leftLeg = stage.path().moveTo(340, 330).lineTo(340, 340);また、チェーンコール(例えば
)がGraphicsJSのいたるところにある方法に注意してください。これにより、コードの短縮に役立ちます。チェーンコールは注意して使用する必要がありますが、適切に適用すると、コードがよりコンパクトで読みやすくなります。
さあ、この著色ページを子供に渡して、ペイントさせましょう。子供でさえ次のテクニックを習(xí)得できるからです
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>GraphicsJS Basic Example</title> </head> <body> <div id="stage-container" style="width: 400px; height: 375px;"></div> <??> <??> </body> </html>これが私たちの例の見た目です。
今、私たちはキルトの隣に立っているハイランダーが屋根の上にわらを置いて彼のレンガの城の近くに立っていることの寫真を持っています。これは確かに著作権を取得したい蕓術(shù)作品であると言うリスクさえあります。カスタムテキストに基づいてパターン記入を使用してこれを行いましょう:
ご覧のとおり、これは簡(jiǎn)単です。テキストオブジェクトのインスタンスを作成し、ステージ上にパターンを形成し、テキストをパターンに入れます。
// 創(chuàng)建舞臺(tái) var stage = acgraph.create('stage-container'); // 繪制矩形 var stage.rect(25, 50, 350, 300);CodePenで色の著作権で保護(hù)された家/グラフィックスを表示します。
50行未満のコードでパズルアートゲームを作成
この記事の次の部分では、50行未満のコードでGraphicsJSを使用してCookieクリッカーのようなゲームを作成する方法を紹介します。
ゲーム名は
「風(fēng)の中で通りを掃除する」<このゲームは、GraphicsJSギャラリーのプログラムで生成された葉の例のコードを使用しています。CodePen(または記事の終わり)で完成したゲームを表示できます。
レイヤー、zindexおよび仮想dom
最初にステージを作成し(前述のように)、いくつかの初期変數(shù)を宣言します。このゲームでは、レイヤーを使用します - グラフィックスのオブジェクトは、要素をグループ化するために使用されます。同様の変更を要素(変換など)に適用する場(chǎng)合は、要素をグループ化する必要があります。パフォーマンスとユーザーエクスペリエンスを向上させる可能性のあるレイヤーを一時(shí)停止モードで変更できます(これについては詳細(xì))。
このデモでは、レイヤー関數(shù)を使用して、葉をグループ化し、ラベルを覆うのを避けます(葉が掃引されている葉の數(shù)がわかります)。これを行うには、タグを作成し、ステージバインディングレイヤーを作成するメソッドを呼び出します。このレイヤーの
プロパティを、ラベルの下のプロパティに設(shè)定します。
// 創(chuàng)建舞臺(tái) var stage = acgraph.create('stage-container'); // 繪制框架 var frame = stage.rect(25, 50, 350, 300); // 繪制房子 var walls = stage.rect(50, 250, 200, 100); var roof = stage.path() .moveTo(50, 250) .lineTo(150, 180) .lineTo(250, 250) .close(); // 繪制一個(gè)人 var head = stage.circle(330, 280, 10); var neck = stage.path().moveTo(330, 290).lineTo(330, 300); var kilt = stage.triangleUp(330, 320, 20); var rightLeg = stage.path().moveTo(320, 330).lineTo(320, 340); var leftLeg = stage.path().moveTo(340, 330).lineTo(340, 340);
これを行った後、レイヤーで作成した葉の數(shù)に関係なく、テキストを上書きしないようにすることができます。
変換stage.layer
zIndex
次に、葉を描く関數(shù)を追加しましょう。これにより、便利なGraphicsJS変換APIが使用されます。これにより、要素と要素のグループを移動(dòng)、スケーリング、回転、およびカットできます。これは、レイヤーと仮想DOMと組み合わせると、非常に強(qiáng)力なツールです。 zIndex
// 給圖片著色 // 精美的框架 frame.stroke(["red", "green", "blue"], 2, "2 2 2"); // 磚墻 walls.fill(acgraph.hatchFill('horizontalbrick')); // 草屋頂 roof.fill("#e4d96f"); // 格子呢裙 kilt.fill(acgraph.hatchFill('plaid'));各パスが同じ方法で作成されていることがわかりますが、変換が実行されます。これにより、非常に美しいランダムな葉のパターンが生成されます。
イベントの処理
グラフィックスのオブジェクト、ステージ、およびレイヤーは、イベントを処理できます。サポートされているイベントの完全なリストは、EventType APIにあります。レンダリングを制御するための4つの特別なイベントがステージにあります。
このゲームの例では、ユーザーがそれらの上に浮かんだときに1つずつ消えるように、Leafオブジェクトに接続されたイベントリスナーを使用しています。これを行うには、ステートメントの前に、次のコードをdrawLeaves
関數(shù)の下部に追加します:return
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>GraphicsJS Basic Example</title> </head> <body> <div id="stage-container" style="width: 400px; height: 375px;"></div> <??> <??> </body> </html>ここでは、葉を計(jì)算するために層を使用していることもわかります。
// 創(chuàng)建舞臺(tái) var stage = acgraph.create('stage-container'); // 繪制矩形 var stage.rect(25, 50, 350, 300);ここに葉の數(shù)を?qū)g際に保存していないことに注意してください。特定の層に葉を追加し、それらから葉を取り除くため、これにより、私たちが持っている子供の要素の數(shù)を追跡できます(したがって、殘りの葉の數(shù))。
GraphicsJSは、ブラウザ固有のSVG/VMLの実裝とは別に、抽象的で軽量で、獨(dú)立した仮想DOMを提供します。すべてのオブジェクトとレイヤーの追跡、グループへの変換の適用、レンダリングをヘルプで最適化するなど、多くの素晴らしいことを行うことで非常に便利です。レンダリングプロセスを追跡および制御できます。
パフォーマンスの最適化
仮想DOMおよびイベントハンドラーにより、GraphicsJSユーザーはレンダリングを制御できます。パフォーマンス記事は、これらの內(nèi)容間の関係を理解するのに役立ちます。
ゲームで葉を生成する場(chǎng)合、新しい葉を追加するときにレンダリングを一時(shí)停止する必要があり、すべての変更が完了した後にレンダリングを再開する必要があります。
新しい要素を扱うこの方法により、新しい葉がほとんどすぐに表示されます。
// 創(chuàng)建舞臺(tái) var stage = acgraph.create('stage-container'); // 繪制框架 var frame = stage.rect(25, 50, 350, 300); // 繪制房子 var walls = stage.rect(50, 250, 200, 100); var roof = stage.path() .moveTo(50, 250) .lineTo(150, 180) .lineTo(250, 250) .close(); // 繪制一個(gè)人 var head = stage.circle(330, 280, 10); var neck = stage.path().moveTo(330, 290).lineTo(330, 300); var kilt = stage.triangleUp(330, 320, 20); var rightLeg = stage.path().moveTo(320, 330).lineTo(320, 340); var leftLeg = stage.path().moveTo(340, 330).lineTo(340, 340);
最後に、
を呼び出してすべてを開始します。
shakeTree()
// 給圖片著色 // 精美的框架 frame.stroke(["red", "green", "blue"], 2, "2 2 2"); // 磚墻 walls.fill(acgraph.hatchFill('horizontalbrick')); // 草屋頂 roof.fill("#e4d96f"); // 格子呢裙 kilt.fill(acgraph.hatchFill('plaid'));
CodepenでStreet Cleaner/GraphicsJsを表示します。
結(jié)論
HTML5への移行により、ネットワークが変更されました。最新のWebアプリケーションやシンプルなWebサイトでさえ、畫像処理が必要なタスクに遭遇することがよくあります。あらゆる場(chǎng)合にうまく機(jī)能するソリューションを見つけることは不可能ですが、GraphicsJSライブラリを考慮する必要があります。これはオープンソースで、堅(jiān)牢で、優(yōu)れたブラウザのサポートと、楽しく、便利で、もちろん便利な多くの機(jī)能を備えています。
以下のコメントでGrphicsJSに関するフィードバックを聞いてみたいです。あなたはすでにそれを使用していますか?新しいプロジェクトに使用することを検討しますか?理由を知りたいのですが、なぜ使わないのかを知りたいです。また、それらすべてを比較して比較するライブラリと記事を描く主要なJavaScriptのリストを執(zhí)筆しています。そこに見たい機(jī)能を自由に指摘してください。
さらに読むためのリンク
- 一般情報(bào)
- svg
- canvas
- svg vs. canvas
- ライブラリ
- graphicsjs
- rapha?l
- snap.svg
- bonsaijs
- graphicsjs
-
Github
- のグラフィックスです GraphicsJSドキュメント
- graphicsjs apiリファレンス
GraphicsJsは他のJavaScriptグラフィックライブラリとどのように違いますか?
グラフィックスは、その強(qiáng)力で軽量な性質(zhì)で際立っています。これは、開発者が高精度と高性能であらゆるグラフィックを描畫してアニメーション化できる強(qiáng)力なライブラリです。他のライブラリとは異なり、GraphicsJSは、速度や効率に影響を與えることなく、レイヤー、勾配、パターンなどを含む包括的な機(jī)能セットを提供します。また、すべての最新のブラウザをサポートしており、開発者にとって多用途のオプションになっています。
グラフィックスを始めるにはどうすればよいですか?
GraphicsJSを開始するには、HTMLファイルにGraphicsJSライブラリを含める必要があります。公式ウェブサイトからライブラリをダウンロードするか、CDNを使用できます。ライブラリが含まれたら、ライブラリが提供する適切な機(jī)能とメソッドを呼び出すことにより、グラフィックの作成を開始できます。
グラフィックスを使用して複雑なアニメーションを作成できますか?
はい、GraphicsJSは複雑なアニメーションを簡(jiǎn)単に処理するように設(shè)計(jì)されています。緩和機(jī)能、遅延、期間設(shè)定など、アニメーション機(jī)能の豊富なセットを提供します。グラフの屬性、その位置、サイズ、色など、アニメーション化できます。これにより、GraphicsJSはインタラクティブで動(dòng)的なグラフィックを作成するための強(qiáng)力なツールになります。
GraphicsJSはすべてのブラウザと互換性がありますか?
GraphicsJSは、Chrome、Firefox、Safari、Internet Explorerなど、すべての最新のブラウザーと互換性があるように設(shè)計(jì)されています。レンダリングにはSVGとVMLを使用していますが、これらはすべてそれらをサポートしています。これにより、グラフィックが一貫して見えるようになり、さまざまなプラットフォームやデバイスでうまく機(jī)能します。
グラフィックスを使用してグラデーションを作成する方法は?
グラフィックスでグラデーションを作成するのは簡(jiǎn)単です。勾配法を使用して、線形または放射狀の勾配を定義し、色と位置を指定し、任意の形狀に勾配を適用できます。これにより、カラフルなグラフィックを簡(jiǎn)単に作成できます。
グラフィックスを使用してインタラクティブなグラフィックを作成できますか?
はい、GraphicsJSは、インタラクティブなグラフィックを作成できる一連のイベント処理機(jī)能を提供します。イベントリスナーを任意のグラフに添付して、クリック、マウスの動(dòng)きなどのユーザーアクションに応答できます。これにより、GraphicsJSはインタラクティブなWebアプリケーションを作成するための優(yōu)れた選択肢になります。
GraphicsJSはレイヤーをサポートしていますか?
はい、GraphicsJSはレイヤーをサポートし、グラフィックを個(gè)別のグループに整理できるようにします。各レイヤーは獨(dú)立して操作できるため、複雑なグラフィックを簡(jiǎn)単に管理できます。また、各レイヤーの可視性とZオーダーを制御することもでき、グラフィックの細(xì)粒を制御できます。
グラフィックスを使用してグラフィックを最適化する方法は?
GraphicsJSは、グラフィックを最適化するのに役立ついくつかの機(jī)能を提供します。たとえば、作物方式を使用して、指定された領(lǐng)域の外側(cè)のグラフィックスの一部を非表示にすることで、必要なレンダリングの量を減らすことができます。キャッシュメソッドを使用して、グラフィックのレンダリングされた出力を保存することもできます。これにより、グラフィックを頻繁に塗り直すとパフォーマンスが向上します。
グラフィックスを使用してチャートとグラフィックを作成できますか?
GraphicsJSはチャートやグラフィックを作成するために特別に設(shè)計(jì)されていませんが、その強(qiáng)力な図面とアニメーション機(jī)能により、チャートやグラフィックを含むあらゆるタイプのグラフィックを作成できます。ライブラリの方法を使用して、線、曲線、長(zhǎng)方形、円などを描畫して、さまざまなチャートタイプを作成できます。
GraphicsJsは自由に使用できますか?
はい、GraphicsJSは無(wú)料のオープンソースライブラリです。プロジェクトで無(wú)料で使用できます。また、ライブラリは、最新のWeb標(biāo)準(zhǔn)とテクノロジーと同期していることを確認(rèn)するために積極的に維持されています。
以上が強(qiáng)力な軽量グラフィックライブラリであるGraphicsJSの紹介の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

ホットAIツール

Undress AI Tool
脫衣畫像を無(wú)料で

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

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

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

SublimeText3 中國(guó)語(yǔ)版
中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1
強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

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

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

ホットトピック











JavaScriptisidealforwebdevelopment,whileJavasuitslarge-scaleapplicationsandAndroiddevelopment.1)JavaScriptexcelsincreatinginteractivewebexperiencesandfull-stackdevelopmentwithNode.js.2)Javaisrobustforenterprisesoftwareandbackendsystems,offeringstrong

JavaScriptでは、シングルラインコメント(//)またはマルチラインコメント(//)を選択することは、コメントの目的とプロジェクトの要件に依存します。 2。詳細(xì)なドキュメントには、マルチラインコメントを使用します。 3。コメントスタイルの一貫性を維持します。 4。過(guò)剰な承認(rèn)を避けます。 5.コメントがコードと同期して更新されていることを確認(rèn)してください。適切な注釈スタイルを選択すると、コードの読みやすさと保守性を向上させることができます。

はい、javascriptcommentsは不必要に使用されています。

JavaとJavaScriptは異なるプログラミング言語(yǔ)であり、それぞれ異なるアプリケーションシナリオに適しています。 Javaは大規(guī)模なエンタープライズおよびモバイルアプリケーション開発に使用されますが、JavaScriptは主にWebページ開発に使用されます。

JavaScriptcommentsEareEssentialential-formaining、およびGuidingCodeexecution.1)single-linecommentseared forquickexplanations.2)多LinecommentsexplaincomplexlogiCorprovidededocumentation.3)clarifyspartsofcode.bestpractic

ContureCrucialInjavascript formantaining andFosteringCollaboration.1)TheypindeBugging、Onboarding、およびUnderstandingCodeevolution.2)usesingle-linecomments for quickexplanations andmulti-linecomments fordeTeTaileddespransions.3)BestPractsinclud

javascripthasseveralprimitivedatypes:number、string、boolean、undefined、null、symbol、andbigint、andnon-primitiveTypeslike objectandarray

javascriptispreferredforwebdevelopment、whilejavaisbetterforlge-scalebackendsystemsandroidapps.1)javascriptexcelsininintingtivewebexperiences withitsdynAmicnature anddommanipulation.2)javaofferstruntypyping-dobject-reientedpeatures
