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

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

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

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

到目前為止,在本系列中,我已經(jīng)介紹了 Paper.js 中的項(xiàng)目和項(xiàng)目、路徑和幾何圖形以及使用者互動(dòng)。該庫還允許您為項(xiàng)目中的各種項(xiàng)目製作動(dòng)畫。如果將其與根據(jù)使用者輸入進(jìn)行操作的能力相結(jié)合,您可以創(chuàng)建一些非??岬男Ч1窘虒W(xué)將介紹如何在 Paper.js 中為項(xiàng)目設(shè)定動(dòng)畫。

本教學(xué)的後面部分也將介紹影像處理以及如何處理單一像素的顏色。該庫還使您能夠從向量建立柵格,這將在最後介紹。

動(dòng)畫基礎(chǔ)

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

onFrame 處理函數(shù)也接收 event 物件。該物件具有三個(gè)屬性,為我們提供與動(dòng)畫相關(guān)的資訊。

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

您可以在處理程序中為許多屬性設(shè)定動(dòng)畫。在我們的範(fàn)例中,我將旋轉(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)畫所需的實(shí)際程式碼非常少。對(duì)於矩形 A,我們?cè)诿看螆?zhí)行 onFrame 處理程序時(shí)將色調(diào)增加 10 倍 event.delta。 event.delta 的值一般會(huì)接近 0.01。如果我沒有將其值乘以 10,則需要很長(zhǎng)時(shí)間才能注意到顏色的變化。

每次執(zhí)行程式碼時(shí),我都會(huì)將每個(gè)矩形旋轉(zhuǎn) 2 度。如果我們使用值 event.time 來旋轉(zhuǎn)矩形,一段時(shí)間後旋轉(zhuǎn)會(huì)變得非??臁?

<圖>

您也可以為各個(gè)片段設(shè)定動(dòng)畫,而不是一次為整個(gè)路徑或?qū)0冈O(shè)定動(dòng)畫。這個(gè)過程本身非常簡(jiǎn)單。您可以使用 path.segments 傳回構(gòu)成路徑的所有區(qū)段的陣列??梢酝高^提供 index 值來存取各個(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)子建立一個(gè)方塊。 sides 參數(shù)決定多邊形的邊數(shù)。 radius 參數(shù)決定多邊形的大小。我還將 completelySelected 屬性設(shè)為 true,以便您可以看到各個(gè)點(diǎn)。

onFrame 處理程序內(nèi),我使用 for 迴圈迭代所有段,並將它們的 x 座標(biāo)設(shè)為等於基於其索引計(jì)算的值。在Math.sin() 函數(shù)內(nèi)使用event.time 函數(shù)不會(huì)產(chǎn)生任何與極值相關(guān)的問題,因?yàn)?code class="inline">Math.sin() 的值不會(huì)產(chǎn)生任何與極端值相關(guān)的問題。 sin() 函數(shù)將永遠(yuǎn)位於 -1 和 1 之間。

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

圖片基礎(chǔ)

#Paper.js 中的影像稱為柵格。您可以像任何其他項(xiàng)目一樣變換和移動(dòng)它們。要在專案中使用圖像,您首先必須使用常用的 img 標(biāo)籤將其新增至網(wǎng)頁的標(biāo)記中,並為其指定 id。這個(gè) id 隨後被傳遞給 new Raster(id) 建構(gòu)子。

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

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

#

要訪問上圖中各個(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ì)給我們帶來更好的結(jié)果,但執(zhí)行速度會(huì)更慢。這是最終結(jié)果,調(diào)整后的光柵在左上角可見:

<圖>

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

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

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

<圖>

光柵化項(xiàng)目

雖然 Paper.js 是一個(gè)矢量圖形庫,但它還允許您從現(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í)來開始使用 Paper.js。雖然學(xué)習(xí)該庫的基礎(chǔ)知識(shí)很容易,但掌握所有概念將需要您付出一些努力。每當(dāng)您需要有關(guān)某個(gè)主題的更多信息時(shí),您可以瀏覽官方網(wǎng)站上的參考資料。

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

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

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

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)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脫衣器

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整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(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

隨著網(wǎng)路的不斷發(fā)展,前端和後端技術(shù)的需求也越來越大。而身為後端開發(fā)人員,掌握PHP是不可或缺的。在PHP開發(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中的自然語言處理入門指南 PHP中的自然語言處理入門指南 Jun 11, 2023 pm 06:30 PM

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

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

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

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

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

從零開始:PHP WebSocket開發(fā)入門指南與功能實(shí)作教學(xué) 從零開始:PHP WebSocket開發(fā)入門指南與功能實(shí)作教學(xué) Sep 12, 2023 am 10:51 AM

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

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

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

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

PHP是一種流行的伺服器端腳本語言,常用於Web開發(fā),而YAML則是一種輕量級(jí)的資料序列化格式,用於設(shè)定檔和資料交換。在本篇文章中,我們將探討PHP如何與YAML結(jié)合使用,以及如何入門。 PHP和YAML在開發(fā)網(wǎng)頁應(yīng)用程式時(shí),開發(fā)人員需要處理大量的資料和配置。這些資料和配置可以儲(chǔ)存在資料庫中,也可以使用文字檔案來儲(chǔ)存。文字檔通常採(cǎi)用XML、JSON或YA

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

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

See all articles