搜尋
首頁web前端css教學初學者的指南繪製2D圖形的指南

A Beginner's Guide to Drawing 2D Graphics With Two.js

tw.js是一種API,可以輕鬆使用代碼創建2D形狀。跟進,您將學習如何從JavaScript中創建和動畫形狀。

twe.js是渲染器的敏捷,因此您可以依靠同一API使用Canvas,SVG或WebGL繪製2D。該庫具有許多方法,可用於控制屏幕上的不同形狀或它們的動畫。圖書館的未壓縮版本的大小約為128 kb,而壓縮版本為50 kb。如果您使用的是最新版本,則可以使用自定義構建進一步減少庫的大小。
  • 可以從github下載庫的縮小版本,也可以直接鏈接到cdn hosted版本。將庫添加到網頁中後,您可以開始繪製和動畫不同的形狀或對象。
  • >創建基本形狀
  • 首先,您需要告訴Twiel.js。您可以將一些參數傳遞到兩個參數。在這裡,tw.makerectangle(x,y,width,height)
  • 和兩個。 makecircle(x,y,radius)和tw.makearrow(x1,y1,y1,x2,y2,size size)值確定箭頭尾部的位置。 Y2值確定箭頭的位置。第五參數確定箭頭的大小。

>有一種稱為RADIUS

的方法確定多邊形頂點與中心的距離,而兩個。 MakeGroup(對象)

。您可以傳遞不同對象的列表,也可以將一組對象,路徑或組作為參數傳遞給此方法。它還將一次返回填充

,lineWidth

值。我們實際上將設置小組的位置。由於矩形是組的一部分,因此它們將自動移動。

進行練習,您應該嘗試修改代碼並將矩形分為兩個平等組。在每個中每個顏色值中應用一組不同的筆觸

顏色值,以創建自己獨特的幾何藝術作品。

定義梯度並寫作文本

您可以在兩個js中定義線性和徑向梯度。定義梯度並不意味著它將在屏幕上自動渲染,但是在設置兩個時,您可以使用它。 makelineargradient(x1,y1,y1,x2,y2,stop)。值新的兩個stop(偏移,顏色,不透明度),其中兩個。 MakerAdialGradient(x,y,radius,stop,stop,fx,fy>>)。在這種情況下,值二。 makeText(消息,x,y,樣式)。從參數的名稱中可以明顯看出,消息是您要編寫的實際文本。參數 x y<code>message是該點的坐標,它將充當編寫文本的中心。 樣式<code>x參數是一個可以用於設置大型屬性值的對象。 y>styles>您可以使用樣式設置諸如font family

的屬性值, size size <p>,<code> code> Acod> Aligimment <ancimegnment>。您還可以指定諸如<code> fill<code>family stroke<code>size opacity <code>alignment rotage> rotation <code>fill scor> scor<code>stroke translation<code>opacityrotationscaletranslation

var rects = [];<br><br>var elemWidth = document.querySelector("#draw-shapes").offsetWidth;<br><br>for (i = 0; i   rects[i] = two.makeRectangle(<br>    Math.floor(Math.random() * elemWidth * 2),<br>    Math.floor(Math.random() * 420 * 2),<br>    10 + Math.floor(Math.random() * 100),<br>    10 + Math.floor(Math.random() * 100)<br>  );<br>}<br><br>var group = two.makeGroup(...rects);<br><br>group.noFill();<br>group.stroke = "black";<br>group.linewidth = 6;<br><br>two.update();<br>

centerXcenterY在本教程中,我將向您展示如何使用Two.js呈現元素週期表的前十個要素,電子圍繞核旋轉的電子。核還將有一些輕微的動作來提高我們表示的視覺吸引力。 elementNames>styles我們首先定義一些變量和函數,這些變量和函數將在以後使用。

>

intRange()>上面的代碼存儲了我們窗口中心的坐標,以變量 cope> cente> cente> centerx <centex> and 和 Centery。這些將稍後將我們的原子放在中心。 <code> elementNames<pre class="brush:php;toolbar:false">var centerX = window.innerWidth / 2;&lt;br&gt;var centerY = window.innerHeight / 2;&lt;br&gt;&lt;br&gt;var elem = document.getElementById(&quot;atoms&quot;);&lt;br&gt;&lt;br&gt;var elementNames = [&lt;br&gt; &quot;&quot;,&lt;br&gt; &quot;Hydrogen&quot;,&lt;br&gt; &quot;Helium&quot;,&lt;br&gt; &quot;Lithium&quot;,&lt;br&gt; &quot;Beryllium&quot;,&lt;br&gt; &quot;Boron&quot;,&lt;br&gt; &quot;Carbon&quot;,&lt;br&gt; &quot;Nitrogen&quot;,&lt;br&gt; &quot;Oxygen&quot;,&lt;br&gt; &quot;Fluorine&quot;,&lt;br&gt; &quot;Neon&quot;&lt;br&gt;];&lt;br&gt;&lt;br&gt;var styles = {&lt;br&gt; alignment: &quot;center&quot;,&lt;br&gt; size: 36,&lt;br&gt; family: &quot;Lato&quot;&lt;br&gt;};&lt;br&gt;&lt;br&gt;var nucleusCount = 10;&lt;br&gt;var nucleusArray = Array();&lt;br&gt;&lt;br&gt;var electronCount = 10;&lt;br&gt;var electronArray = Array();&lt;br&gt;&lt;br&gt;function intRange(min, max) {&lt;br&gt; return Math.random() * (max - min) + min;&lt;br&gt;}&lt;br&gt;</pre>陣列包含週期表的前十個元素的名稱。每個名稱的索引對應於該元素的電子和質子的數量,它以一個空字符串開始。 <code>樣式<p>對象包含用於造型文本對象的屬性。 </p>><p>我們還定義了一個函數<code> intrange()<code>intRange()在給定的極端內獲取一個隨機的整數值。 makeCircle()nucleusArray

這將創建兩個實例並定義了兩個徑向梯度。紅色/黑色徑向梯度將代表質子,而藍色/黑色梯度將代表中子。 我們使用了 intrange()功能將所有這些中子和質子放置在彼此20個像素中。 <code> makeCircle()方法還將這些質子和中子的半徑設置為10像素。之後,我們迭代<code> nucleusArray ,並用不同的梯度交替填充每個圓圈。 在核內放置中子和質子很容易。但是,將電子適當地放置在均勻距離處將需要一些數學。我們使用<pre class="brush:php;toolbar:false">var rects = [];&lt;br&gt;&lt;br&gt;var elemWidth = document.querySelector(&quot;#draw-shapes&quot;).offsetWidth;&lt;br&gt;&lt;br&gt;for (i = 0; i rects[i] = two.makeRectangle(&lt;br&gt; Math.floor(Math.random() * elemWidth * 2),&lt;br&gt; Math.floor(Math.random() * 420 * 2),&lt;br&gt; 10 + Math.floor(Math.random() * 100),&lt;br&gt; 10 + Math.floor(Math.random() * 100)&lt;br&gt; );&lt;br&gt;}&lt;br&gt;&lt;br&gt;var group = two.makeGroup(...rects);&lt;br&gt;&lt;br&gt;group.noFill();&lt;br&gt;group.stroke = &quot;black&quot;;&lt;br&gt;group.linewidth = 6;&lt;br&gt;&lt;br&gt;two.update();&lt;br&gt;</pre>>變量來指定不同電子殼與核的距離。整個圓的角度等於2 Pi弧度。我們可以通過平等分配2個PI弧度來統一地放置不同的電子。 <ancy><p>><code>shellRadius>和

函數用於根據其角度的角度分離不同電子的位置向量的垂直和水平成分。它還一次將所有電子的填充顏色設置為特定軌道。它還告訴Two.js以特定的速度旋轉電子和質子。

Math.cos()Math.sin()>代碼的最後一部分使我們通過單擊鼠標或敲擊來迭代元素。為了加載下一個元素,我們將更多電子和一個質子或中子可見,然後更新元素名稱。單擊最後一個元素後,所有粒子都會再次隱藏,因此我們可以重新開始。

>可變跟踪當前可見的原子粒子數量,以便我們可以相應地顯示或隱藏它們。兩個庫庫以及如何用於繪製矩形,圓圈和橢圓等形狀。之後,我們討論瞭如何一次分組不同的對像以一次操縱它們。我們使用此能力將元素分組以同步轉換和旋轉它們。這些工具都在我們所看到的元素週期表中前十個元素的原子的動畫中匯集在一起​​,您可以看到,創建動畫的2D圖形非常容易使用two.js。這篇文章的重點是幫助您快速入門,因此我們只介紹了基礎知識。但是,您應該閱讀官方文檔,以了解有關庫的更多信息!
var centerX = window.innerWidth / 2;<br>var centerY = window.innerHeight / 2;<br><br>var elem = document.getElementById("atoms");<br><br>var elementNames = [<br>  "",<br>  "Hydrogen",<br>  "Helium",<br>  "Lithium",<br>  "Beryllium",<br>  "Boron",<br>  "Carbon",<br>  "Nitrogen",<br>  "Oxygen",<br>  "Fluorine",<br>  "Neon"<br>];<br><br>var styles = {<br>  alignment: "center",<br>  size: 36,<br>  family: "Lato"<br>};<br><br>var nucleusCount = 10;<br>var nucleusArray = Array();<br><br>var electronCount = 10;<br>var electronArray = Array();<br><br>function intRange(min, max) {<br>  return Math.random() * (max - min) + min;<br>}<br>

更多JavaScript Resources

以上是初學者的指南繪製2D圖形的指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
@rules具有多少特異性,例如@keyframes和@media?@rules具有多少特異性,例如@keyframes和@media?Apr 18, 2025 am 11:34 AM

前幾天我得到了這個問題。我的第一個想法是:奇怪的問題!特異性是關於選擇者的,而在符號不是選擇器,那麼...無關緊要?

您可以嵌套@Media和@support查詢嗎?您可以嵌套@Media和@support查詢嗎?Apr 18, 2025 am 11:32 AM

是的,您可以,而且它並不重要。不需要CSS預處理器。它在常規CSS中起作用。

快速吞噬緩存破壞快速吞噬緩存破壞Apr 18, 2025 am 11:23 AM

您應該肯定會在CSS和JavaScript(以及圖像和字體以及其他內容)等資產上設置遙遠的高速緩存標頭。告訴瀏覽器

尋找可以監視CSS質量和復雜性的堆棧尋找可以監視CSS質量和復雜性的堆棧Apr 18, 2025 am 11:22 AM

許多開發人員寫瞭如何維護CSS代碼庫的文章,但並沒有很多關於如何測量該代碼庫質量的文章。當然,我們有

數據學家用於建議不執行值的值數據學家用於建議不執行值的值Apr 18, 2025 am 11:08 AM

您是否曾經有一種需要接受簡短而任意的文本的表格?喜歡名字或其他。那完全是用的。有很多

蘇黎世的最初會議蘇黎世的最初會議Apr 18, 2025 am 11:03 AM

我很高興能前往瑞士蘇黎世參加前界(Love the Name and URL!)。我以前從未去過瑞士,所以我很興奮

使用CloudFlare工人建立全棧無服務器應用程序使用CloudFlare工人建立全棧無服務器應用程序Apr 18, 2025 am 10:58 AM

我在軟件開發方面最喜歡的發展之一是無服務器的出現。作為一個傾向於陷入細節的開發人員

在NUXT應用程序中創建動態路由在NUXT應用程序中創建動態路由Apr 18, 2025 am 10:53 AM

在這篇文章中,我們將使用我構建和部署的電子商務商店演示來進行Netlify,以展示如何為傳入數據製作動態路線。這是一個公平的

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)