亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
動(dòng)畫(huà)基礎(chǔ)知識(shí)
光柵化項(xiàng)目
最終想法
首頁(yè) CMS教程 &#&按 Paper.js入門指南:動(dòng)畫(huà)和圖像

Paper.js入門指南:動(dòng)畫(huà)和圖像

Sep 03, 2023 am 09:05 AM
入門指南 paperjs 動(dòng)畫(huà)和圖像

到目前為止,在本系列中,我已經(jīng)介紹了 Paper.js 中的項(xiàng)目和項(xiàng)目、路徑和幾何圖形以及用戶交互。該庫(kù)還允許您為項(xiàng)目中的各種項(xiàng)目制作動(dòng)畫(huà)。如果將其與根據(jù)用戶輸入進(jìn)行操作的能力相結(jié)合,您可以創(chuàng)建一些非常酷的效果。本教程將介紹如何在 Paper.js 中為項(xiàng)目設(shè)置動(dòng)畫(huà)。

本教程的后面部分還將介紹圖像處理以及如何處理單個(gè)像素的顏色。該庫(kù)還使您能夠從矢量創(chuàng)建柵格,這將在最后介紹。

動(dòng)畫(huà)基礎(chǔ)知識(shí)

Paper.js 中的所有動(dòng)畫(huà)均由 onFrame 事件處理程序處理。處理程序內(nèi)的代碼每秒執(zhí)行最多 60 次。每次執(zhí)行后視圖都會(huì)自動(dòng)重繪。逐漸改變函數(shù)內(nèi)部的一些屬性可以創(chuàng)建一些非常好的效果。

onFrame 處理函數(shù)還接收 event 處理函數(shù)還接收 event 對(duì)象。該對(duì)象具有三個(gè)屬性,為我們提供與動(dòng)畫(huà)相關(guān)的信息。

第一個(gè)是 event.count,它告訴我們處理程序執(zhí)行的次數(shù)。第二個(gè)是 event.delta,它為我們提供了自上次執(zhí)行處理程序以來(lái)經(jīng)過(guò)的總時(shí)間。第三個(gè)是 event.time,它為我們提供了自第一幀事件以來(lái)經(jīng)過(guò)的時(shí)間。

您可以在處理程序中為許多屬性設(shè)置動(dòng)畫(huà)。在我們的示例中,我將旋轉(zhuǎn)三個(gè)矩形并更改中心矩形的色調(diào)??紤]下面的代碼:

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);
}

從上面的代碼片段可以明顯看出,為矩形設(shè)置動(dòng)畫(huà)所需的實(shí)際代碼非常少。對(duì)于矩形 A,我們?cè)诿看螆?zhí)行 onFrame 處理程序時(shí)將色調(diào)增加 10 倍 event.delta。 event.delta 處理程序時(shí)將色調(diào)增加 10 倍 event.delta。 event.delta 的值一般會(huì)接近 0.01。如果我沒(méi)有將其值乘以 10,則需要很長(zhǎng)時(shí)間才能注意到顏色的變化。

每次執(zhí)行代碼時(shí),我都會(huì)將每個(gè)矩形旋轉(zhuǎn) 2 度。如果我們使用值 event.time 來(lái)旋轉(zhuǎn)矩形,一段時(shí)間后旋轉(zhuǎn)會(huì)變得非??臁?/p> <圖>

您還可以為各個(gè)片段設(shè)置動(dòng)畫(huà),而不是一次為整個(gè)路徑或項(xiàng)目設(shè)置動(dòng)畫(huà)。這個(gè)過(guò)程本身非常簡(jiǎn)單。您可以使用 path.segments 返回構(gòu)成路徑的所有段的數(shù)組??梢酝ㄟ^(guò)提供 index 值來(lái)訪問(wèn)各個(gè)段。在進(jìn)一步討論之前,我希望您看一下下面的代碼。

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;
}

在這里,我們首先使用 Path.RegularPolygon(center, Sides, radius) 構(gòu)造函數(shù)創(chuàng)建一個(gè)正方形。 sides 參數(shù)確定多邊形的邊數(shù)。 radius 參數(shù)決定多邊形的大小。我還將 completelySelected 屬性設(shè)置為 true,以便您可以看到各個(gè)點(diǎn)。

onFrame 處理程序內(nèi),我使用 for 循環(huán)迭代所有段,并將它們的 x 坐標(biāo)設(shè)置為等于基于其索引計(jì)算的值。在 Math.sin() 函數(shù)內(nèi)使用 event.time 函數(shù)不會(huì)產(chǎn)生任何與極值相關(guān)的問(wèn)題,因?yàn)?Math.sin() 的值不會(huì)產(chǎn)生任何與極值相關(guān)的問(wèn)題。 sin() 處理程序內(nèi),我使用 for 循環(huán)迭代所有段,并將它們的 x 坐標(biāo)設(shè)置為等于基于其索引計(jì)算的值。在 Math.sin() 函數(shù)內(nèi)使用

函數(shù)不會(huì)產(chǎn)生任何與極值相關(guān)的問(wèn)題,因?yàn)?Math.sin() 的值不會(huì)產(chǎn)生任何與極值相關(guān)的問(wèn)題。 sin() 函數(shù)將始終位于 -1 和 1 之間。

onFrame 處理程序中的代碼。我建議您嘗試為多邊形構(gòu)造函數(shù)以及 sin以下演示顯示了我們的動(dòng)畫(huà)正方形,順便說(shuō)一下,它不再是正方形,這要?dú)w功于我們的 處理程序中的代碼。我建議您嘗試為多邊形構(gòu)造函數(shù)以及 sin 函數(shù)的參數(shù)嘗試不同的值,看看它們?nèi)绾斡绊懷菔局械淖罱K動(dòng)畫(huà)。<圖>

圖像基礎(chǔ)知識(shí)

img 標(biāo)簽將其添加到網(wǎng)頁(yè)的標(biāo)記中,并為其指定 id。這個(gè) id 隨后被傳遞給 new Raster(id)Paper.js 中的圖像稱為柵格。您可以像任何其他項(xiàng)目一樣變換和移動(dòng)它們。要在項(xiàng)目中使用圖像,您首先必須使用常用的

構(gòu)造函數(shù)。

請(qǐng)記住,您正在使用的圖像需要已加載,并且應(yīng)托管在與您的項(xiàng)目相同的網(wǎng)站上。使用其他域上托管的圖像將導(dǎo)致安全錯(cuò)誤。在本教程中,我們將操作以下圖像:

Paper.js入門指南:動(dòng)畫(huà)和圖像

??

要訪問(wèn)上圖中各個(gè)像素的顏色,您可以使用 柵格。 getPixel(x, y) 函數(shù),其中 x 和 y 是像素的坐標(biāo)。下面的代碼生成 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;
});

加載柵格后,我們將其大小調(diào)整為 80*40。像素。在嵌套的 for 循環(huán)內(nèi),我們遍歷該柵格的各個(gè)像素并創(chuàng)建 7*7 的正方形。增加?xùn)鸥竦拇笮?huì)給我們帶來(lái)更好的結(jié)果,但執(zhí)行速度會(huì)更慢。這是最終結(jié)果,調(diào)整后的光柵在左上角可見(jiàn):

<圖>

如果要隱藏調(diào)整大小后的柵格,可以將 raster.visible 屬性設(shè)置為 false。您還可以操縱生成的方塊的顏色。例如,要增加所有方塊中的紅色分量,您可以使用以下行:

path.fillColor = color + new Color(0.4,0,0);

在這種情況下,最終結(jié)果將是:

<圖>

光柵化項(xiàng)目

雖然 Paper.js 是一個(gè)矢量圖形庫(kù),但它還允許您從現(xiàn)有項(xiàng)目創(chuàng)建光柵。為此,您必須使用 item.rasterize() 方法。光柵化后,原始項(xiàng)目本身不會(huì)從項(xiàng)目中刪除。您還可以選擇指定光柵的分辨率(以每英寸像素為單位)。下面的代碼以不同的分辨率從多邊形創(chuàng)建兩個(gè)柵格:

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);

與中間的相比,最右邊的分辨率更高的多邊形仍然很清晰。最終結(jié)果如下:

最終想法

如果您已閱讀本系列中的所有教程,您應(yīng)該擁有足夠的知識(shí)來(lái)開(kāi)始使用 Paper.js。雖然學(xué)習(xí)該庫(kù)的基礎(chǔ)知識(shí)很容易,但掌握所有概念將需要您付出一些努力。每當(dāng)您需要有關(guān)某個(gè)主題的更多信息時(shí),您可以瀏覽官方網(wǎng)站上的參考資料。

JavaScript 已成為事實(shí)上的網(wǎng)絡(luò)工作語(yǔ)言之一。它并非沒(méi)有學(xué)習(xí)曲線,而且還有大量的框架和庫(kù)可以讓您忙碌起來(lái)。如果您正在尋找其他資源來(lái)學(xué)習(xí)或在工作中使用,請(qǐng)查看我們?cè)?Envato 市場(chǎng)中提供的資源。

如果您使用此庫(kù)創(chuàng)建了一些有趣的東西,請(qǐng)?jiān)谠u(píng)論中分享您的作品。

以上是Paper.js入門指南:動(dòng)畫(huà)和圖像的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
PHP入門指南:PATCH請(qǐng)求和響應(yīng) PHP入門指南:PATCH請(qǐng)求和響應(yīng) May 23, 2023 pm 04:21 PM

隨著互聯(lián)網(wǎng)的不斷發(fā)展,前端和后端技術(shù)的需求也越來(lái)越大。而作為一名后端開(kāi)發(fā)人員,掌握PHP是必不可少的。在PHP開(kāi)發(fā)中,我們經(jīng)常需要進(jìn)行請(qǐng)求和響應(yīng)的處理。本篇文章將圍繞著PATCH請(qǐng)求和響應(yīng)進(jìn)行探討,為PHP的初學(xué)者提供實(shí)用的指南。一、PATCH請(qǐng)求PATCH請(qǐng)求是一個(gè)HTTP請(qǐng)求方法,它用于更新已經(jīng)存在的資源。在HTTP協(xié)議中,有一種方法是使用PUT請(qǐng)求進(jìn)行

PHP中的自然語(yǔ)言處理入門指南 PHP中的自然語(yǔ)言處理入門指南 Jun 11, 2023 pm 06:30 PM

隨著人工智能技術(shù)的發(fā)展,自然語(yǔ)言處理(NaturalLanguageProcessing,NLP)已經(jīng)成為了一項(xiàng)非常重要的技術(shù)。NLP可以幫助我們更好地理解和分析人類語(yǔ)言,從而實(shí)現(xiàn)一些自動(dòng)化的任務(wù),比如智能客服、情感分析、機(jī)器翻譯等。在本文中,我們將介紹使用PHP進(jìn)行自然語(yǔ)言處理的基本知識(shí)和工具。什么是自然語(yǔ)言處理自然語(yǔ)言處理是一種利用人工智能技術(shù)來(lái)處

Java開(kāi)發(fā)初學(xué)者指南:從入門到放棄 Java開(kāi)發(fā)初學(xué)者指南:從入門到放棄 Sep 22, 2023 am 08:25 AM

Java是一種廣泛應(yīng)用于軟件開(kāi)發(fā)的編程語(yǔ)言,其簡(jiǎn)潔的語(yǔ)法和強(qiáng)大的功能使其成為許多開(kāi)發(fā)者的首選。然而,對(duì)于初學(xué)者來(lái)說(shuō),學(xué)習(xí)Java可能會(huì)感到有些困難。本篇文章將為Java開(kāi)發(fā)初學(xué)者提供一個(gè)指南,幫助他們從入門到放棄。學(xué)習(xí)基本語(yǔ)法Java的基本語(yǔ)法包括變量、數(shù)據(jù)類型、運(yùn)算符、條件語(yǔ)句和循環(huán)語(yǔ)句等。初學(xué)者應(yīng)該從這些基本概念開(kāi)始學(xué)習(xí),并編寫(xiě)簡(jiǎn)單的代碼示例來(lái)加深理解。

PHP初級(jí)指南:解析淘寶商品詳情API文檔 PHP初級(jí)指南:解析淘寶商品詳情API文檔 Jun 30, 2023 pm 06:22 PM

PHP技術(shù)入門指南:淘寶商品詳情API文檔解讀引言:PHP作為一種廣泛應(yīng)用于Web開(kāi)發(fā)的編程語(yǔ)言,擁有著龐大的用戶群體和豐富的擴(kuò)展庫(kù)。其中,使用PHP開(kāi)發(fā)淘寶商品詳情API是一個(gè)非常實(shí)用且常見(jiàn)的需求。本文將針對(duì)這一需求,給出一份淘寶商品詳情API文檔的詳細(xì)解讀,為初學(xué)者提供入門指南。一、什么是淘寶商品詳情API淘寶商品詳情API是淘寶開(kāi)放平臺(tái)提供的一種接口,

從零開(kāi)始:PHP WebSocket開(kāi)發(fā)入門指南與功能實(shí)現(xiàn)教程 從零開(kāi)始:PHP WebSocket開(kāi)發(fā)入門指南與功能實(shí)現(xiàn)教程 Sep 12, 2023 am 10:51 AM

從零開(kāi)始:PHPWebSocket開(kāi)發(fā)入門指南與功能實(shí)現(xiàn)教程一、引言隨著互聯(lián)網(wǎng)的發(fā)展,實(shí)時(shí)通信的需求越來(lái)越大。而WebSocket作為一種新的實(shí)時(shí)通信協(xié)議,逐漸受到廣大開(kāi)發(fā)者的關(guān)注和使用。本文將以PHP作為開(kāi)發(fā)語(yǔ)言,為大家介紹WebSocket的基本概念,并提供一份適合初學(xué)者的開(kāi)發(fā)入門指南,幫助讀者從零開(kāi)始實(shí)現(xiàn)WebSocket的功能。二、WebSocke

PHP入門指南:代碼重構(gòu) PHP入門指南:代碼重構(gòu) May 26, 2023 pm 04:21 PM

在寫(xiě)PHP代碼時(shí),重構(gòu)是一個(gè)非常重要的過(guò)程。隨著應(yīng)用程序的增長(zhǎng),代碼庫(kù)會(huì)變得越來(lái)越龐大,難以閱讀和維護(hù)。重構(gòu)是為了解決這個(gè)問(wèn)題,讓代碼更加模塊化,并可以更好地組織和擴(kuò)展。當(dāng)我們重構(gòu)代碼時(shí),需要考慮以下幾個(gè)方面:代碼風(fēng)格代碼風(fēng)格是很重要的一點(diǎn)。保持你的代碼風(fēng)格一致性會(huì)讓代碼更易于閱讀和維護(hù)。請(qǐng)遵循PHP代碼規(guī)范,并保持一致。嘗試使用代碼風(fēng)格檢查工具,例如PHP

PHP入門指南:PHP和YAML PHP入門指南:PHP和YAML May 20, 2023 pm 08:21 PM

PHP是一種流行的服務(wù)器端腳本語(yǔ)言,常用于Web開(kāi)發(fā),而YAML則是一種輕量級(jí)的數(shù)據(jù)序列化格式,用于配置文件和數(shù)據(jù)交換。在本篇文章中,我們將探討PHP如何與YAML結(jié)合使用,以及如何入門。PHP和YAML在開(kāi)發(fā)Web應(yīng)用程序時(shí),開(kāi)發(fā)人員需要處理大量的數(shù)據(jù)和配置。這些數(shù)據(jù)和配置可以存儲(chǔ)在數(shù)據(jù)庫(kù)中,也可以使用文本文件來(lái)存儲(chǔ)。文本文件通常采用XML、JSON或YA

學(xué)習(xí)C語(yǔ)言的技巧和經(jīng)驗(yàn)分享 學(xué)習(xí)C語(yǔ)言的技巧和經(jīng)驗(yàn)分享 Feb 19, 2024 pm 09:20 PM

C語(yǔ)言入門指南:學(xué)習(xí)技巧與經(jīng)驗(yàn)分享引言:C語(yǔ)言作為一門經(jīng)典的編程語(yǔ)言,一直受到廣大程序員的喜愛(ài)和青睞。作為一名初學(xué)者,學(xué)習(xí)C語(yǔ)言可能會(huì)面臨一些困難和挑戰(zhàn)。本文旨在分享一些學(xué)習(xí)C語(yǔ)言的技巧和經(jīng)驗(yàn),幫助初學(xué)者更好地掌握這門語(yǔ)言。一、打好基礎(chǔ)作為一門高級(jí)編程語(yǔ)言,掌握C語(yǔ)言需要打好基礎(chǔ)。首先,要學(xué)習(xí)和理解C語(yǔ)言的基本語(yǔ)法規(guī)則,掌握變量的定義和使用、函數(shù)的編寫(xiě)和調(diào)用

See all articles