Table des matières
Connaissance de base de l'animation
光栅化项目
最终想法
Maison Tutoriel CMS WordPresse Premiers pas avec Paper.js : animations et images

Premiers pas avec Paper.js : animations et images

Sep 03, 2023 am 09:05 AM
入门指南 paperjs animations et images

Jusqu'à présent dans cette série, j'ai couvert les éléments et les éléments, les chemins et la géométrie, ainsi que l'interaction des utilisateurs dans Paper.js. La bibliothèque vous permet également d'animer divers éléments de votre projet. Si vous combinez cela avec la possibilité d'agir en fonction des entrées de l'utilisateur, vous pouvez créer des effets vraiment sympas. Ce didacticiel vous montre comment animer des éléments dans Paper.js.

Plus loin dans ce didacticiel, nous aborderons également le traitement des images et la manière de manipuler la couleur des pixels individuels. La bibliothèque vous permet également de créer des rasters à partir de vecteurs, qui seront abordés à la fin.

Connaissance de base de l'animation

Toutes les animations dans Paper.js sont gérées par onFrame gestionnaires d'événements. Le code dans le gestionnaire est exécuté jusqu'à 60 fois par seconde. La vue est automatiquement redessinée après chaque exécution. Changer progressivement certaines propriétés à l'intérieur d'une fonction peut créer de très jolis effets.

onFrame 处理函数还接收 event Les fonctions de gestionnaire reçoivent également des objets event. Cet objet possède trois propriétés qui nous fournissent des informations liées à l'animation.

Le premier est event.count,它告诉我们处理程序执行的次数。第二个是 event.delta,它为我们提供了自上次执行处理程序以来经过的总时间。第三个是 event.time qui nous donne le temps écoulé depuis le premier événement frame.

Vous pouvez animer de nombreuses propriétés dans les gestionnaires. Dans notre exemple, je vais faire pivoter trois rectangles et modifier la teinte du rectangle central. Considérez le code suivant :

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);
}
Copier après la connexion

Comme le montre l’extrait de code ci-dessus, très peu de code réel est nécessaire pour animer un rectangle. Pour le rectangle A, nous augmentons la teinte d'un facteur 10 à chaque fois que le gestionnaire onFrame 处理程序时将色调增加 10 倍 event.deltaevent.delta est exécuté event.delta. La valeur de event.delta est généralement proche de 0,01. Si je n'avais pas multiplié sa valeur par 10, il aurait fallu beaucoup de temps pour remarquer le changement de couleur.

Chaque fois que j'exécute le code, je fais pivoter chaque rectangle de 2 degrés. Si nous utilisons la valeur event.time pour faire pivoter le rectangle, la rotation deviendra très rapide au bout d'un moment.

<图>

Vous pouvez également animer des fragments individuels au lieu d'animer l'ensemble du chemin ou de l'élément en même temps. Le processus lui-même est très simple. Vous pouvez utiliser la valeur path.segments 返回构成路径的所有段的数组。可以通过提供 index pour accéder à des segments individuels. Avant d'aller plus loin, j'aimerais que vous jetiez un œil au code ci-dessous.

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;
}
Copier après la connexion

Ici, nous commençons par Path.RegularPolygon(center, Sides, radius) 构造函数创建一个正方形。 sides 参数确定多边形的边数。 radius 参数决定多边形的大小。我还将 completelySelected 属性设置为 true pour que vous puissiez voir les points individuels.

Dans le gestionnaire onFrame 处理程序内,我使用 for 循环迭代所有段,并将它们的 x 坐标设置为等于基于其索引计算的值。在 Math.sin() 函数内使用 event.time 函数不会产生任何与极值相关的问题,因为 Math.sin() 的值不会产生任何与极值相关的问题。 sin(), j'utilise une boucle for pour parcourir tous les segments et définir leurs coordonnées x égales aux valeurs calculées en fonction de leurs index. L'utilisation de la fonction

à l'intérieur de la fonction Math.sin() ne crée aucun problème lié aux valeurs extrêmes car la valeur de Math.sin() Non des problèmes liés aux valeurs extrêmes surviennent. La fonction sin() sera toujours comprise entre -1 et 1.

onFrame 处理程序中的代码。我建议您尝试为多边形构造函数以及 sinLa démo suivante montre notre carré animé, qui d'ailleurs n'est plus un carré grâce au code de notre gestionnaire <​​/p>. Je vous suggère d'essayer différentes valeurs pour le constructeur de polygones et les arguments de la fonction sin pour voir comment ils affectent l'animation finale dans la démo. <图>

Bases de l'image

img 标签将其添加到网页的标记中,并为其指定 id。这个 id 随后被传递给 new Raster(id)Les images dans Paper.js sont appelées rasters. Vous pouvez les transformer et les déplacer comme n’importe quel autre élément. Pour utiliser des images dans votre projet, vous devez d'abord utiliser le constructeur

habituel.

N'oubliez pas que l'image que vous utilisez doit être chargée et doit être hébergée sur le même site Web que votre projet. L'utilisation d'images hébergées sur d'autres domaines entraînera des erreurs de sécurité. Dans ce tutoriel nous allons manipuler les images suivantes :

Premiers pas avec Paper.js : animations et images

🎜

要访问上图中各个像素的颜色,您可以使用 栅格。 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;
});
Copier après la connexion

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

<图>

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

path.fillColor = color + new Color(0.4,0,0);
Copier après la connexion

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

<图>

光栅化项目

虽然 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);
Copier après la connexion

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

最终想法

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

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

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide du débutant sur le traitement du langage naturel en PHP Guide du débutant sur le traitement du langage naturel en PHP Jun 11, 2023 pm 06:30 PM

Avec le développement de la technologie de l’intelligence artificielle, le traitement du langage naturel (NLP) est devenu une technologie très importante. La PNL peut nous aider à mieux comprendre et analyser le langage humain pour réaliser certaines tâches automatisées, telles que le service client intelligent, l'analyse des sentiments, la traduction automatique, etc. Dans cet article, nous aborderons les bases et les outils du traitement du langage naturel à l'aide de PHP. Qu'est-ce que le traitement du langage naturel ? Le traitement du langage naturel est une méthode qui utilise la technologie de l'intelligence artificielle pour traiter

Premiers pas avec PHP : requêtes et réponses PATCH Premiers pas avec PHP : requêtes et réponses PATCH May 23, 2023 pm 04:21 PM

À mesure qu’Internet continue de se développer, la demande de technologies front-end et back-end augmente également. En tant que développeur back-end, la maîtrise de PHP est essentielle. Dans le développement PHP, nous devons souvent traiter des demandes et des réponses. Cet article discutera de la requête et de la réponse PATCH, fournissant un guide pratique pour les débutants PHP. 1. Requête PATCH La requête PATCH est une méthode de requête HTTP utilisée pour mettre à jour les ressources existantes. Dans le protocole HTTP, il existe un moyen d'utiliser une requête PUT pour

Guide du débutant sur le développement Java : du démarrage à l'abandon Guide du débutant sur le développement Java : du démarrage à l'abandon Sep 22, 2023 am 08:25 AM

Java est un langage de programmation largement utilisé dans le développement de logiciels. Sa syntaxe concise et ses fonctions puissantes en font le premier choix de nombreux développeurs. Cependant, pour les débutants, apprendre Java peut sembler un peu difficile. Cet article fournira un guide destiné aux débutants en développement Java pour les aider du début à l'abandon. Apprenez la syntaxe de base. La syntaxe de base de Java comprend des variables, des types de données, des opérateurs, des instructions conditionnelles, des instructions de boucle, etc. Les débutants doivent commencer par ces concepts de base et rédiger des exemples de code simples pour approfondir leur compréhension.

Premiers pas avec PHP : PHP et YAML Premiers pas avec PHP : PHP et YAML May 20, 2023 pm 08:21 PM

PHP est un langage de script côté serveur populaire couramment utilisé pour le développement Web, tandis que YAML est un format léger de sérialisation de données utilisé pour les fichiers de configuration et l'échange de données. Dans cet article, nous explorerons comment PHP fonctionne avec YAML et comment démarrer. PHP et YAML Lors du développement d'applications Web, les développeurs doivent gérer une grande quantité de données et de configuration. Ces données et configurations peuvent être stockées dans une base de données ou à l'aide de fichiers texte. Les fichiers texte utilisent généralement XML, JSON ou YA

Guide du débutant PHP : analyse du document API des détails du produit Taobao Guide du débutant PHP : analyse du document API des détails du produit Taobao Jun 30, 2023 pm 06:22 PM

Introduction à la technologie PHP : Détails du produit Taobao Interprétation du document API Introduction : PHP, en tant que langage de programmation largement utilisé dans le développement Web, dispose d'un grand groupe d'utilisateurs et d'une riche bibliothèque d'extensions. Parmi eux, l'utilisation de PHP pour développer l'API de détails des produits Taobao est une exigence très pratique et courante. Cet article fournira une interprétation détaillée du document API des détails du produit Taobao afin de fournir un guide d'introduction pour les débutants. 1. Qu'est-ce que l'API Taobao Product Details ? L'API Taobao Product Details est une interface fournie par la plateforme ouverte Taobao.

Partir de zéro : guide d'introduction au développement de PHP WebSocket et tutoriel d'implémentation de fonctions Partir de zéro : guide d'introduction au développement de PHP WebSocket et tutoriel d'implémentation de fonctions Sep 12, 2023 am 10:51 AM

Partir de zéro : guide d'introduction au développement de PHP WebSocket et tutoriel d'implémentation des fonctions 1. Introduction Avec le développement d'Internet, la demande de communication en temps réel augmente. En tant que nouveau protocole de communication en temps réel, WebSocket a progressivement attiré l'attention et l'utilisation des développeurs. Cet article utilisera PHP comme langage de développement pour présenter les concepts de base de WebSocket et fournira un guide de développement d'introduction adapté aux débutants pour aider les lecteurs à implémenter les fonctions WebSocket à partir de zéro. 2. WebSocket

Premiers pas avec PHP : refactorisation de code Premiers pas avec PHP : refactorisation de code May 26, 2023 pm 04:21 PM

La refactorisation est un processus très important lors de l'écriture de code PHP. À mesure qu’une application se développe, la base de code devient de plus en plus volumineuse et difficile à lire et à maintenir. La refactorisation vise à résoudre ce problème et à rendre le code plus modulaire, mieux organisé et extensible. Lorsque nous refactorisons le code, nous devons prendre en compte les aspects suivants : Style du code Le style du code est un point très important. Garder votre style de codage cohérent rendra votre code plus facile à lire et à maintenir. Veuillez suivre les normes de codage PHP et être cohérent. Essayez d'utiliser un outil de vérification de style de code tel que PHP

Guide du débutant sur le traitement d'images PHP Guide du débutant sur le traitement d'images PHP Jun 11, 2023 am 08:49 AM

PHP est un langage de programmation côté serveur très populaire et largement utilisé pour le développement Web. Dans le développement Web, le traitement d’images est une exigence très courante, et il est également très simple d’implémenter le traitement d’images en PHP. Cet article présentera brièvement le guide d'introduction au traitement d'images PHP. 1. Exigences environnementales Pour utiliser le traitement d'images PHP, vous avez d'abord besoin du support de la bibliothèque PHPGD. La bibliothèque fournit des fonctions pour écrire des images dans des fichiers ou les exporter vers un navigateur, recadrer et redimensionner des images, ajouter du texte et créer des images en niveaux de gris ou les inverser. donc

See all articles