Inhaltsverzeichnis
Grundkenntnisse der Animation
光栅化项目
最终想法
Heim CMS-Tutorial WordDrücken Sie Erste Schritte mit Paper.js: Animationen und Bilder

Erste Schritte mit Paper.js: Animationen und Bilder

Sep 03, 2023 am 09:05 AM
入门指南 paperjs Animationen und Bilder

Bisher habe ich in dieser Serie Elemente und Elemente, Pfade und Geometrie sowie Benutzerinteraktion in Paper.js behandelt. Mit der Bibliothek können Sie außerdem verschiedene Elemente in Ihrem Projekt animieren. Wenn Sie dies mit der Möglichkeit kombinieren, basierend auf Benutzereingaben zu handeln, können Sie einige wirklich coole Effekte erzielen. Dieses Tutorial zeigt Ihnen, wie Sie Elemente in Paper.js animieren.

Später in diesem Tutorial befassen wir uns auch mit der Bildverarbeitung und der Manipulation der Farbe einzelner Pixel. Die Bibliothek ermöglicht es Ihnen auch, Raster aus Vektoren zu erstellen, die am Ende behandelt werden.

Grundkenntnisse der Animation

Alle Animationen in Paper.js werden von onFrameEreignishandlern verarbeitet. Code innerhalb des Handlers wird bis zu 60 Mal pro Sekunde ausgeführt. Die Ansicht wird nach jeder Ausführung automatisch neu gezeichnet. Durch schrittweises Ändern einiger Eigenschaften innerhalb einer Funktion können sehr schöne Effekte erzielt werden.

onFrame 处理函数还接收 event Handlerfunktionen empfangen auch Ereignis-Objekte. Dieses Objekt verfügt über drei Eigenschaften, die uns mit Animationsinformationen versorgen.

Das erste ist event.count,它告诉我们处理程序执行的次数。第二个是 event.delta,它为我们提供了自上次执行处理程序以来经过的总时间。第三个是 event.time, das uns die seit dem ersten Frame-Ereignis verstrichene Zeit angibt.

Sie können viele Eigenschaften in Handlern animieren. In unserem Beispiel drehe ich drei Rechtecke und ändere den Farbton des mittleren Rechtecks. Betrachten Sie den folgenden Code:

var rectA = new Path.Rectangle({
  point: [300, 100],
  size: [200, 150],
  strokeColor: 'yellow',
  strokeWidth: 10
});

var rectB = rectA.clone();
rectB.strokeColor = 'orange';
rectB.scale(0.8);
var rectC = rectA.clone();
rectC.strokeColor = 'black';
rectC.scale(1.2);

function onFrame(event) {
  rectA.strokeColor.hue += 10 * event.delta;
  rectA.rotate(2);
  rectB.rotate(2);
  rectC.rotate(2);
}
Nach dem Login kopieren

Wie aus dem obigen Codeausschnitt hervorgeht, ist zum Animieren eines Rechtecks ​​nur sehr wenig tatsächlicher Code erforderlich. Für Rechteck A erhöhen wir den Farbton bei jeder Ausführung des onFrame 处理程序时将色调增加 10 倍 event.deltaevent.delta-Handlers um den Faktor 10 event.delta. Der Wert von event.delta liegt normalerweise nahe bei 0,01. Wenn ich den Wert nicht mit 10 multipliziert hätte, hätte es lange gedauert, bis ich die Farbänderung bemerkt hätte.

Jedes Mal, wenn ich den Code ausführe, drehe ich jedes Rechteck um 2 Grad. Wenn wir den Wert event.time verwenden, um das Rechteck zu drehen, wird die Drehung nach einer Weile sehr schnell.

<图>

Sie können auch einzelne Fragmente animieren, anstatt den gesamten Pfad oder das gesamte Element auf einmal zu animieren. Der Prozess selbst ist sehr einfach. Mit dem path.segments 返回构成路径的所有段的数组。可以通过提供 index-Wert können Sie auf einzelne Segmente zugreifen. Bevor wir fortfahren, möchte ich Sie bitten, einen Blick auf den folgenden Code zu werfen.

var aSquare = new Path.RegularPolygon(new Point(550, 200), 4, 100);
aSquare.fillColor = 'pink';
aSquare.fullySelected = true;

function onFrame(event) {
  for (var i = 0; i <= 3; i++) {
    var sinValue = Math.sin(event.time * 4 + i);
    
    aSquare.segments[i].point.x = sinValue * 100 + 350;
  }
  aSquare.segments[1].point.y = sinValue * 50 + 100;
}
Nach dem Login kopieren

Hier beginnen wir mit Path.RegularPolygon(center, Sides, radius) 构造函数创建一个正方形。 sides 参数确定多边形的边数。 radius 参数决定多边形的大小。我还将 completelySelected 属性设置为 true, damit Sie die einzelnen Punkte sehen können.

Innerhalb des onFrame 处理程序内,我使用 for 循环迭代所有段,并将它们的 x 坐标设置为等于基于其索引计算的值。在 Math.sin() 函数内使用 event.time 函数不会产生任何与极值相关的问题,因为 Math.sin() 的值不会产生任何与极值相关的问题。 sin()-Handlers verwende ich eine for-Schleife, um alle Segmente zu durchlaufen und ihre x-Koordinaten gleich den Werten zu setzen, die basierend auf ihren Indizes berechnet wurden. Die Verwendung der Funktion

innerhalb der Funktion Math.sin() verursacht keine Probleme im Zusammenhang mit Extremwerten, da der Wert von Math.sin() Nr Es treten Probleme im Zusammenhang mit Extremwerten auf. Die Funktion sin() liegt immer zwischen -1 und 1.

onFrame 处理程序中的代码。我建议您尝试为多边形构造函数以及 sinDie folgende Demo zeigt unser animiertes Quadrat, das dank des Codes in unserem <​​/p>-Handler übrigens kein Quadrat mehr ist. Ich schlage vor, dass Sie verschiedene Werte für den Polygonkonstruktor sowie die Argumente für die Funktion sin ausprobieren, um zu sehen, wie sie sich auf die endgültige Animation in der Demo auswirken. <图>

Bildgrundlagen

img 标签将其添加到网页的标记中,并为其指定 id。这个 id 随后被传递给 new Raster(id)Bilder in Paper.js werden Raster genannt. Sie können sie wie jeden anderen Gegenstand umwandeln und verschieben. Um Bilder in Ihrem Projekt zu verwenden, müssen Sie zunächst den üblichen

-Konstruktor verwenden.

Bitte denken Sie daran, dass das von Ihnen verwendete Bild geladen und auf derselben Website wie Ihr Projekt gehostet werden muss. Die Verwendung von Bildern, die auf anderen Domains gehostet werden, führt zu Sicherheitsfehlern. In diesem Tutorial bearbeiten wir die folgenden Bilder:

Erste Schritte mit Paper.js: Animationen und Bilder

🎜

要访问上图中各个像素的颜色,您可以使用 栅格。 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;
});
Nach dem Login kopieren

加载栅格后,我们将其大小调整为 80*40。像素。在嵌套的 for 循环内,我们遍历该栅格的各个像素并创建 7*7 的正方形。增加栅格的大小会给我们带来更好的结果,但执行速度会更慢。这是最终结果,调整后的光栅在左上角可见:

<图>

如果要隐藏调整大小后的栅格,可以将 raster.visible 属性设置为 false。您还可以操纵生成的方块的颜色。例如,要增加所有方块中的红色分量,您可以使用以下行:

path.fillColor = color + new Color(0.4,0,0);
Nach dem Login kopieren

在这种情况下,最终结果将是:

<图>

光栅化项目

虽然 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);
Nach dem Login kopieren

与中间的相比,最右边的分辨率更高的多边形仍然很清晰。最终结果如下:

最终想法

如果您已阅读本系列中的所有教程,您应该拥有足够的知识来开始使用 Paper.js。虽然学习该库的基础知识很容易,但掌握所有概念将需要您付出一些努力。每当您需要有关某个主题的更多信息时,您可以浏览官方网站上的参考资料。

JavaScript 已成为事实上的网络工作语言之一。它并非没有学习曲线,而且还有大量的框架和库可以让您忙碌起来。如果您正在寻找其他资源来学习或在工作中使用,请查看我们在 Envato 市场中提供的资源。

如果您使用此库创建了一些有趣的东西,请在评论中分享您的作品。

Das obige ist der detaillierte Inhalt vonErste Schritte mit Paper.js: Animationen und Bilder. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ein Leitfaden für Anfänger zur Verarbeitung natürlicher Sprache in PHP Ein Leitfaden für Anfänger zur Verarbeitung natürlicher Sprache in PHP Jun 11, 2023 pm 06:30 PM

Mit der Entwicklung der Technologie der künstlichen Intelligenz ist die Verarbeitung natürlicher Sprache (NLP) zu einer sehr wichtigen Technologie geworden. NLP kann uns helfen, die menschliche Sprache besser zu verstehen und zu analysieren, um einige automatisierte Aufgaben zu erfüllen, wie z. B. intelligenten Kundenservice, Stimmungsanalyse, maschinelle Übersetzung usw. In diesem Artikel behandeln wir die Grundlagen und Tools für die Verarbeitung natürlicher Sprache mit PHP. Was ist die Verarbeitung natürlicher Sprache? Die Verarbeitung natürlicher Sprache ist eine Methode, die künstliche Intelligenz zur Verarbeitung nutzt

Erste Schritte mit PHP: PATCH-Anfragen und -Antworten Erste Schritte mit PHP: PATCH-Anfragen und -Antworten May 23, 2023 pm 04:21 PM

Mit der Weiterentwicklung des Internets steigt auch die Nachfrage nach Front-End- und Back-End-Technologien. Als Back-End-Entwickler ist die Beherrschung von PHP unerlässlich. Bei der PHP-Entwicklung müssen wir häufig Anfragen und Antworten verarbeiten. In diesem Artikel werden die PATCH-Anfrage und -Antwort erläutert und ein praktischer Leitfaden für PHP-Anfänger bereitgestellt. 1. PATCH-Anfrage Die PATCH-Anfrage ist eine HTTP-Anfragemethode, die zur Aktualisierung vorhandener Ressourcen verwendet wird. Im HTTP-Protokoll gibt es eine Möglichkeit, eine PUT-Anfrage zu verwenden

Anfängerleitfaden zur Java-Entwicklung: Vom Einstieg bis zum Aufgeben Anfängerleitfaden zur Java-Entwicklung: Vom Einstieg bis zum Aufgeben Sep 22, 2023 am 08:25 AM

Java ist eine in der Softwareentwicklung weit verbreitete Programmiersprache. Aufgrund ihrer prägnanten Syntax und leistungsstarken Funktionen ist sie für viele Entwickler die erste Wahl. Für Anfänger kann sich das Erlernen von Java jedoch etwas schwierig anfühlen. Dieser Artikel bietet einen Leitfaden für Anfänger in der Java-Entwicklung, der ihnen vom Einstieg bis zum Aufgeben hilft. Erlernen Sie die grundlegende Syntax. Die grundlegende Syntax von Java umfasst Variablen, Datentypen, Operatoren, bedingte Anweisungen, Schleifenanweisungen usw. Anfänger sollten mit diesen Grundkonzepten beginnen und einfache Codebeispiele schreiben, um ihr Verständnis zu vertiefen.

Erste Schritte mit PHP: PHP und YAML Erste Schritte mit PHP: PHP und YAML May 20, 2023 pm 08:21 PM

PHP ist eine beliebte serverseitige Skriptsprache, die häufig für die Webentwicklung verwendet wird, während YAML ein leichtes Datenserialisierungsformat ist, das für Konfigurationsdateien und den Datenaustausch verwendet wird. In diesem Artikel erfahren Sie, wie PHP mit YAML funktioniert und wie Sie damit beginnen. PHP und YAML Bei der Entwicklung von Webanwendungen müssen Entwickler mit großen Datenmengen und Konfigurationen umgehen. Diese Daten und Konfigurationen können in einer Datenbank oder mithilfe von Textdateien gespeichert werden. Textdateien verwenden normalerweise XML, JSON oder YA

PHP-Anfängerleitfaden: Parsen des Taobao-Produktdetails-API-Dokuments PHP-Anfängerleitfaden: Parsen des Taobao-Produktdetails-API-Dokuments Jun 30, 2023 pm 06:22 PM

Einführung in die PHP-Technologie: Taobao-Produktdetails API-Dokumentinterpretation Einführung: PHP ist eine in der Webentwicklung weit verbreitete Programmiersprache und verfügt über eine große Benutzergruppe und eine umfangreiche Erweiterungsbibliothek. Unter anderem ist die Verwendung von PHP zur Entwicklung der Taobao-Produktdetails-API eine sehr praktische und häufige Anforderung. In diesem Artikel wird das API-Dokument mit den Produktdetails von Taobao detailliert interpretiert und als Einführungsleitfaden für Anfänger bereitgestellt. 1. Was ist die Taobao-Produktdetails-API? Die Taobao-Produktdetails-API ist eine Schnittstelle, die von der offenen Plattform von Taobao bereitgestellt wird.

Von vorne beginnen: Einführungsleitfaden zur PHP WebSocket-Entwicklung und Tutorial zur Funktionsimplementierung Von vorne beginnen: Einführungsleitfaden zur PHP WebSocket-Entwicklung und Tutorial zur Funktionsimplementierung Sep 12, 2023 am 10:51 AM

Von vorne beginnen: Einführungsleitfaden zur PHP WebSocket-Entwicklung und Tutorial zur Funktionsimplementierung 1. Einführung Mit der Entwicklung des Internets steigt die Nachfrage nach Echtzeitkommunikation. Als neues Echtzeit-Kommunikationsprotokoll hat WebSocket nach und nach die Aufmerksamkeit und Nutzung von Entwicklern auf sich gezogen. In diesem Artikel wird PHP als Entwicklungssprache verwendet, um die Grundkonzepte von WebSocket vorzustellen, und ein einführender Entwicklungsleitfaden bereitgestellt, der für Anfänger geeignet ist und Lesern dabei hilft, WebSocket-Funktionen von Grund auf zu implementieren. 2. WebSocket

Erste Schritte mit PHP: Code-Refactoring Erste Schritte mit PHP: Code-Refactoring May 26, 2023 pm 04:21 PM

Refactoring ist ein sehr wichtiger Prozess beim Schreiben von PHP-Code. Wenn eine Anwendung wächst, wird die Codebasis größer und schwieriger zu lesen und zu warten. Durch Refactoring soll dieses Problem gelöst und der Code modularer, besser organisiert und erweiterbar gemacht werden. Wenn wir den Code umgestalten, müssen wir die folgenden Aspekte berücksichtigen: Codestil Der Codestil ist ein sehr wichtiger Punkt. Wenn Sie Ihren Codierungsstil konsistent halten, ist Ihr Code einfacher zu lesen und zu warten. Bitte befolgen Sie die PHP-Codierungsstandards und seien Sie konsistent. Versuchen Sie, ein Tool zur Codestilprüfung wie PHP zu verwenden

Anfängerleitfaden zur PHP-Bildverarbeitung Anfängerleitfaden zur PHP-Bildverarbeitung Jun 11, 2023 am 08:49 AM

PHP ist eine sehr beliebte serverseitige Programmiersprache und wird häufig für die Webentwicklung verwendet. In der Webentwicklung ist die Bildverarbeitung eine sehr häufige Anforderung und es ist auch sehr einfach, die Bildverarbeitung in PHP zu implementieren. In diesem Artikel wird kurz die Einführung in die PHP-Bildverarbeitung vorgestellt. 1. Umgebungsanforderungen Um die PHP-Bildverarbeitung nutzen zu können, benötigen Sie zunächst die Unterstützung der PHPGD-Bibliothek. Die Bibliothek bietet Funktionen zum Schreiben von Bildern in Dateien oder zum Ausgeben an einen Browser, zum Zuschneiden und Skalieren von Bildern, zum Hinzufügen von Text und zum Erstellen von Graustufen oder Invertieren von Bildern. daher

See all articles