Paper.js 入門: アニメーションと画像
このシリーズではこれまで、Paper.js でのアイテムとアイテム、パスとジオメトリ、およびユーザー インタラクションについて説明してきました。このライブラリを使用すると、プロジェクト内のさまざまなアイテムをアニメーション化することもできます。これをユーザー入力に基づいて動作する機能と組み合わせると、非常に優れたエフェクトを作成できます。このチュートリアルでは、Paper.js でアイテムをアニメーション化する方法を説明します。
このチュートリアルの後半では、画像処理と個々のピクセルの色を操作する方法についても説明します。このライブラリでは、ベクターからラスターを作成することもできます。これについては最後に説明します。
アニメーションの基礎知識
Paper.js のすべてのアニメーションは、onFrame
イベント ハンドラーによって処理されます。ハンドラー内のコードは 1 秒あたり最大 60 回実行されます。ビューは実行のたびに自動的に再描画されます。関数内のいくつかのプロパティを徐々に変更すると、非常に素晴らしい効果が得られることがあります。
onFrame
ハンドラーは event
オブジェクトも受け取ります。このオブジェクトには、アニメーション関連の情報を提供する 3 つのプロパティがあります。
最初の値は event.count
で、ハンドラーが実行された回数を示します。 2 つ目は event.delta
で、ハンドラーが最後に実行されてから経過した合計時間を示します。 3 番目は event.time
で、最初のフレーム イベントからの経過時間を示します。
ハンドラーでは多くのプロパティをアニメーション化できます。この例では、3 つの長方形を回転し、中央の長方形の色合いを変更します。次のコードを考えてみましょう:
リーリー上記のコード スニペットから明らかなように、長方形をアニメーション化するために必要な実際のコードはほとんどありません。四角形 A では、onFrame
ハンドラーが実行されるたびに、色合いを 10 event.delta
倍に増やします。 event.delta
の値は通常、0.01 に近いです。値を 10 倍にしていなかったら、色の変化に気づくまでに長い時間がかかっていたでしょう。
コードを実行するたびに、各四角形を 2 度回転します。値 event.time
を使用して四角形を回転すると、しばらくすると回転が非常に速くなります。
#パス全体または項目を一度にアニメーション化するのではなく、個々のフラグメントをアニメーション化することもできます。プロセス自体は非常に簡単です。 path.segments
を使用すると、パスを構成するすべてのセグメントの配列を返すことができます。個々のセグメントには、index
値を指定することでアクセスできます。先に進む前に、以下のコードを見ていただきたいと思います。
ここでは、まず Path. RegularPolygon(center, Sides, radius)
コンストラクターを使用して正方形を作成します。 sides
このパラメータは、多角形の辺の数を決定します。 radius
パラメータはポリゴンのサイズを決定します。また、個々のポイントを確認できるように、completelySelected
プロパティを true
に設定します。
onFrame
ハンドラー内で、for ループを使用してすべてのセグメントを反復処理し、その X 座標をインデックスに基づいて計算された値に設定します。 Math.sin()
関数内で event.time
関数を使用しても、Math.sin() の値は影響を受けないため、極値に関連する問題は発生しません。極端な値に関連する問題。 sin()
関数は常に -1 と 1 の間に位置します。
次のデモは、アニメーション化された正方形を示しています。ちなみに、onFrame
ハンドラーのコードのおかげで、これは正方形ではなくなりました。ポリゴン コンストラクターのさまざまな値と sin
関数の引数を試して、デモの最終アニメーションにどのような影響を与えるかを確認することをお勧めします。
画像の基本
Paper.js の画像はラスターと呼ばれます。他のアイテムと同じように変形したり移動したりできます。プロジェクトで画像を使用するには、まず通常の img
タグを使用して Web ページのマークアップに画像を追加し、id
を割り当てる必要があります。この id
は、new Raster(id)
コンストラクターに渡されます。
使用している画像はロードする必要があり、プロジェクトと同じ Web サイトでホストされる必要があることに注意してください。他のドメインでホストされているイメージを使用すると、セキュリティ エラーが発生します。このチュートリアルでは、次の画像を操作します:
要访问上图中各个像素的颜色,您可以使用 栅格。 getPixel(x, y)
函数,其中 x 和 y 是像素的坐标。下面的代码生成 7*7 像素的正方形,填充位于左上角的像素的颜色:
var raster = new Raster('landscape'); var gridSize = 8; var rectSize = 7; raster.on('load', function() { raster.size = new Size(80, 40); for (var y = 0; y < raster.height; y++) { for (var x = 0; x < raster.width; x++) { var color = raster.getPixel(x, y); var path = new Path.Rectangle( new Point(x, y) * gridSize, new Size(rectSize, rectSize)); path.fillColor = color; } } project.activeLayer.position = view.center; });
加载栅格后,我们将其大小调整为 80*40。像素。在嵌套的 for
循环内,我们遍历该栅格的各个像素并创建 7*7 的正方形。增加栅格的大小会给我们带来更好的结果,但执行速度会更慢。这是最终结果,调整后的光栅在左上角可见:
如果要隐藏调整大小后的栅格,可以将 raster.visible
属性设置为 false
。您还可以操纵生成的方块的颜色。例如,要增加所有方块中的红色分量,您可以使用以下行:
path.fillColor = color + new Color(0.4,0,0);
在这种情况下,最终结果将是:
<图>光栅化项目
虽然 Paper.js 是一个矢量图形库,但它还允许您从现有项目创建光栅。为此,您必须使用 item.rasterize()
方法。光栅化后,原始项目本身不会从项目中删除。您还可以选择指定光栅的分辨率(以每英寸像素为单位)。下面的代码以不同的分辨率从多边形创建两个栅格:
var aDodecagon = new Path.RegularPolygon(new Point(150, 180), 12, 30); aDodecagon.fillColor = '#CCAAFC'; var dodecRasterA = aDodecagon.rasterize(); dodecRasterA.position.x += 250; var dodecRasterB = aDodecagon.rasterize(150); dodecRasterB.position.x += 500; aDodecagon.scale(3); dodecRasterA.scale(3); dodecRasterB.scale(3);
与中间的相比,最右边的分辨率更高的多边形仍然很清晰。最终结果如下:
最终想法
如果您已阅读本系列中的所有教程,您应该拥有足够的知识来开始使用 Paper.js。虽然学习该库的基础知识很容易,但掌握所有概念将需要您付出一些努力。每当您需要有关某个主题的更多信息时,您可以浏览官方网站上的参考资料。
JavaScript 已成为事实上的网络工作语言之一。它并非没有学习曲线,而且还有大量的框架和库可以让您忙碌起来。如果您正在寻找其他资源来学习或在工作中使用,请查看我们在 Envato 市场中提供的资源。
如果您使用此库创建了一些有趣的东西,请在评论中分享您的作品。
以上がPaper.js 入門: アニメーションと画像の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホット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)

ホットトピック









人工知能技術の発展に伴い、自然言語処理 (NLP) は非常に重要な技術となっています。 NLP は、人間の言語をよりよく理解して分析し、インテリジェントな顧客サービス、感情分析、機械翻訳などの自動化されたタスクを実現するのに役立ちます。この記事では、PHP を使用した自然言語処理の基本とツールについて説明します。自然言語処理とは 自然言語処理とは、人工知能技術を利用して処理を行う手法です。

インターネットが発展し続けるにつれて、フロントエンドおよびバックエンド テクノロジーの需要も増加しています。バックエンド開発者として、PHP をマスターすることは不可欠です。 PHP 開発では、リクエストとレスポンスを処理する必要があることがよくあります。この記事では PATCH リクエストとレスポンスについて説明し、PHP 初心者向けの実践的なガイドを提供します。 1. PATCH リクエスト PATCH リクエストは、既存のリソースを更新するために使用される HTTP リクエスト メソッドです。 HTTP プロトコルでは、PUT リクエストを使用して、

Java はソフトウェア開発で広く使用されているプログラミング言語であり、その簡潔な構文と強力な機能により、多くの開発者にとって Java が最初の選択肢となります。ただし、初心者にとって Java の学習は少し難しく感じるかもしれません。この記事では、Java 開発初心者が始めてから諦めるまでをサポートするガイドを提供します。基本構文を学ぶ Java の基本構文には、変数、データ型、演算子、条件文、ループ文などが含まれます。初心者はこれらの基本概念から始めて、簡単なコード例を書いて理解を深めてください。

PHP は Web 開発によく使用される人気のサーバーサイド スクリプト言語ですが、YAML は構成ファイルやデータ交換に使用される軽量のデータ シリアル化形式です。この記事では、PHP が YAML とどのように連携するのか、またその開始方法について説明します。 PHP と YAML Web アプリケーションを開発する場合、開発者は大量のデータと構成を扱う必要があります。これらのデータと構成は、データベースに保存することも、テキスト ファイルを使用して保存することもできます。テキスト ファイルは通常、XML、JSON、または YA を使用します。

PHP テクノロジーの紹介: タオバオ製品の詳細 API ドキュメントの解釈 はじめに: PHP は、Web 開発で広く使用されているプログラミング言語として、大規模なユーザー グループと豊富な拡張ライブラリを備えています。その中でも、PHP を使用して淘宝商品詳細 API を開発することは、非常に実用的で一般的な要件です。この記事では、淘宝網の商品詳細 API ドキュメントの詳細な解釈を提供し、初心者向けの入門ガイドを提供します。 1. タオバオ商品詳細 API とは何ですか? タオバオ商品詳細 API は、タオバオ オープン プラットフォームが提供するインターフェイスです。

ゼロから始めるPHP WebSocket開発入門ガイドと機能実装チュートリアル 1. はじめに インターネットの発展に伴い、リアルタイム通信の需要が高まっています。新しいリアルタイム通信プロトコルとして、WebSocket は開発者の注目と使用を徐々に集めています。この記事では、開発言語として PHP を使用して WebSocket の基本概念を紹介し、読者が WebSocket 機能を最初から実装できるように初心者に適した入門開発ガイドを提供します。 2.Webソケット

リファクタリングは、PHP コードを作成する際の非常に重要なプロセスです。アプリケーションが成長するにつれて、コード ベースが大きくなり、読み取りや保守が困難になります。リファクタリングは、この問題を解決し、コードをよりモジュール化し、より適切に組織化して拡張可能にすることです。コードをリファクタリングするときは、次の側面を考慮する必要があります。 コード スタイル コード スタイルは非常に重要な点です。コーディング スタイルの一貫性を維持すると、コードが読みやすく、保守しやすくなります。 PHP コーディング標準に従い、一貫性を保ってください。 PHPなどのコードスタイルチェックツールを使ってみる

PHP は非常に人気のあるサーバーサイド プログラミング言語であり、Web 開発に広く使用されています。 Web 開発では、画像処理は非常に一般的な要件であり、PHP で画像処理を実装することも非常に簡単です。この記事では、PHP画像処理の入門ガイドを簡単に紹介します。 1. 環境要件 PHP 画像処理を使用するには、まず PHPGD ライブラリのサポートが必要です。このライブラリは、画像のファイルへの書き込みやブラウザへの出力、画像のトリミングと拡大縮小、テキストの追加、画像のグレースケール化や反転を行う機能を提供します。したがって
