日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

JavaScript圖片旋轉(zhuǎn)效果實(shí)現(xiàn)方法詳解

瀏覽:174日期:2023-10-22 17:02:59

在Canvas API中,上下文CanvasRenderingContext2D對(duì)象提供了一個(gè)與坐標(biāo)旋轉(zhuǎn)相關(guān)的方法:

void rotate(in float angle); // 按給定的弧度順時(shí)針旋轉(zhuǎn)angle

rotate()方法旋轉(zhuǎn)的中心始終是canvas的原點(diǎn)。如果要改變旋轉(zhuǎn)中心,需要使用translate方法。

我們可以將繪制的圖形每隔一定的時(shí)間間隔后,旋轉(zhuǎn)一定的角度重新繪制一次,這樣就可以得到旋轉(zhuǎn)的動(dòng)畫(huà)效果。

1.旋轉(zhuǎn)的扇葉

將一個(gè)梯形按順時(shí)針旋轉(zhuǎn)90°的方式繪制4次,可以繪制出一個(gè)扇葉圖案。將繪制的扇葉圖案每隔0.1秒后順時(shí)針旋轉(zhuǎn)12°,重新繪制一遍,得到旋轉(zhuǎn)的扇葉動(dòng)畫(huà)。

編寫(xiě)如下的HTML代碼。

<!DOCTYPE html><head><title>旋轉(zhuǎn)的扇葉</title><script type='text/javascript'>var context;var i;function draw(id){var canvas = document.getElementById(id);if (canvas == null)return false;context = canvas.getContext(’2d’);i = 3;setInterval(move, 100);}function move(){context.clearRect(0, 0, 400, 300);context.save();context.fillStyle = ’green’;context.translate(100, 100);context.rotate(i * Math.PI / 45)drawLeaf();i += 3;if (i >= 90) i = 3;context.restore();}function drawLeaf() // 繪制扇葉{context.save();for (var j = 0; j < 4; j++){context.rotate(Math.PI / 2);context.beginPath();context.moveTo(-20, -80);context.lineTo(0, -80);context.lineTo(0, 0);context.lineTo(-30, 0);context.closePath();context.fill();}context.restore();}</script></head><body onload='draw(’myCanvas’);'><canvas height='200'style='border:3px double #996633;'></canvas></body></html>

將上述HTML代碼保存到一個(gè)html文本文件中,再在瀏覽器中打開(kāi)包含這段HTML代碼的html文件,可以在瀏覽器窗口中看到扇葉的旋轉(zhuǎn)動(dòng)畫(huà),如圖1所示。

JavaScript圖片旋轉(zhuǎn)效果實(shí)現(xiàn)方法詳解

圖1 旋轉(zhuǎn)的扇葉

2.旋轉(zhuǎn)的五角星

將繪制的五角星圖案每隔0.1秒后順時(shí)針旋轉(zhuǎn)12°,重新繪制一遍,得到旋轉(zhuǎn)的五角星動(dòng)畫(huà)。

編寫(xiě)如下的HTML代碼。

<!DOCTYPE html><head><title>旋轉(zhuǎn)的五角星</title><script type='text/javascript'>var context;var i;function draw(id){var canvas = document.getElementById(id);if (canvas == null)return false;context = canvas.getContext(’2d’);i = 3;setInterval(move, 100);}function move(){context.clearRect(0, 0, 400, 300);context.save();context.fillStyle = ’green’;context.translate(100, 100);context.rotate(i * Math.PI / 45)drawStar(80);i += 3;if (i >= 90) i = 3;context.restore();}function drawStar(r) // 繪制五角星圖案{context.save();context.fillStyle = 'red';context.beginPath();context.moveTo(r, 0);for (var i = 0; i < 9; i++){context.rotate(Math.PI / 5);if (i % 2 == 0)context.lineTo((r / 2), 0);elsecontext.lineTo(r, 0);}context.closePath();context.fill();context.restore();}</script></head><body onload='draw(’myCanvas’);'><canvas height='200'style='border:3px double #996633;'></canvas></body></html>

將上述HTML代碼保存到一個(gè)html文本文件中,再在瀏覽器中打開(kāi)包含這段HTML代碼的html文件,可以在瀏覽器窗口中看到五角星的旋轉(zhuǎn)動(dòng)畫(huà),如圖2所示。

JavaScript圖片旋轉(zhuǎn)效果實(shí)現(xiàn)方法詳解

圖2 旋轉(zhuǎn)的五角星

3.旋轉(zhuǎn)的正六邊形漩渦

我們先來(lái)畫(huà)一個(gè)正六邊形。這樣作圖,設(shè)從起點(diǎn)向繪圖方向畫(huà)一條長(zhǎng)為i的線段,將線段的終點(diǎn)設(shè)為新的起點(diǎn),同時(shí)繪圖方向旋轉(zhuǎn)60°,再畫(huà)一條長(zhǎng)為i+1的線段,重復(fù)這樣的過(guò)程共繪制六條線段,則這六條線段構(gòu)成一個(gè)正六邊形。

編寫(xiě)HTML文件內(nèi)容如下。

<!DOCTYPE html><head><title>正六邊形</title><script type='text/javascript'>function draw(id){var canvas = document.getElementById(id);if (canvas == null)return false;var context = canvas.getContext(’2d’);context.fillStyle = '#EEEEFF';context.fillRect(0, 0, 400, 400);context.translate(canvas.width / 2,canvas.height / 2);var colors = [’red’, ’yellow’,’green’, ’cyan’, ’blue’, ’purple’];for (i = 150; i < 156; i++){context.strokeStyle = colors[i % 6];context.lineWidth = 2;context.beginPath();context.moveTo(0, 0);context.lineTo(0, i / 2);context.stroke();context.translate(0, i / 2);context.rotate(-60 * (2 * Math.PI /360));}}</script></head><body onload='draw(’myCanvas’);'><canvas height='400'style='border:3px double #996633;'></canvas></body></html>

將上述HTML代碼保存到一個(gè)html文本文件中,再在瀏覽器中打開(kāi)包含這段HTML代碼的html文件,可以在畫(huà)布中繪制一個(gè)正六邊形圖案,如圖3所示。

JavaScript圖片旋轉(zhuǎn)效果實(shí)現(xiàn)方法詳解

圖3 一個(gè)正六邊形

繪制圖3的程序中,循環(huán)進(jìn)行了6次,只繪制6條邊。若修改“for (i =150; i < 156; i++)”語(yǔ)句為“for (i =150; i < 180; i++)”,使得循環(huán)進(jìn)行30次,則在畫(huà)布中繪制出如圖4所示的圖案,該圖案有5個(gè)六邊形圍成。若修改語(yǔ)句為“for (i =0; i < 360; i++)”,則在畫(huà)布中繪制出如圖5所示的六邊形圖案。

JavaScript圖片旋轉(zhuǎn)效果實(shí)現(xiàn)方法詳解

圖4 5個(gè)六邊形圍成的圖案

JavaScript圖片旋轉(zhuǎn)效果實(shí)現(xiàn)方法詳解

圖5 正六邊形

生成圖5圖案的程序中,繪圖時(shí)旋轉(zhuǎn)的角度為60°,若將旋轉(zhuǎn)角度改成59°,即將語(yǔ)句“context.rotate(-60 * (2 * Math.PI / 360));”修改為“context.rotate(-59 * (2 * Math.PI / 360));”,則在畫(huà)布中繪制出如圖6所示的正六邊形漩渦。

JavaScript圖片旋轉(zhuǎn)效果實(shí)現(xiàn)方法詳解

圖6 正六邊形漩渦

將圖6的正六邊形漩渦旋轉(zhuǎn)起來(lái)。編寫(xiě)如下的HTML文件。

<!DOCTYPE html><head><title>旋轉(zhuǎn)的正六邊形漩渦</title><script type='text/javascript'>var context;var count;function draw(id){var canvas = document.getElementById(id);if (canvas == null)return false;context = canvas.getContext(’2d’);count = 3;setInterval(move, 100);}function move(){context.clearRect(0, 0, 400, 400);context.save();context.translate(200, 200);context.rotate(count * Math.PI / 45)drawSix();count += 3;if (count >= 90) count = 3;context.restore();}function drawSix() // 繪制正六邊形漩渦圖案{context.save();var colors = [’red’, ’yellow’,’green’, ’cyan’, ’blue’, ’purple’];for (i = 0; i < 360; i++){context.strokeStyle = colors[i % 6];context.lineWidth = i / 200 + 1;context.beginPath();context.moveTo(0, 0);context.lineTo(0, i / 2);context.stroke();context.translate(0, i / 2);context.rotate(-59 * (2 * Math.PI /360));}context.restore();}</script></head><body onload='draw(’myCanvas’);'><canvas height='400'style='border:3px double #996633;'></canvas></body></html>

將上述HTML代碼保存到一個(gè)html文本文件中,再在瀏覽器中打開(kāi)包含這段HTML代碼的html文件,可以在瀏覽器窗口中看到正六邊形漩渦的旋轉(zhuǎn)動(dòng)畫(huà),如圖7所示。

圖7所示的動(dòng)畫(huà)顯得有些單調(diào),我們修改上面的程序,使得在繪制正六邊形時(shí)的旋轉(zhuǎn)角度進(jìn)行變化,得到不斷轉(zhuǎn)呀轉(zhuǎn)的正六邊形。

編寫(xiě)的HTML文件內(nèi)容如下。這個(gè)HTML文件的內(nèi)容與上一個(gè)HTML文件內(nèi)容,修改了兩處,為方便讀者引用,還是給出完整文件內(nèi)容。

JavaScript圖片旋轉(zhuǎn)效果實(shí)現(xiàn)方法詳解

圖7 正六邊形漩渦的旋轉(zhuǎn)動(dòng)畫(huà)

<!DOCTYPE html><head><title>旋轉(zhuǎn)的正六邊形漩渦</title><script type='text/javascript'>var context;var count;function draw(id){var canvas = document.getElementById(id);if (canvas == null)return false;context = canvas.getContext(’2d’);count = 0;setInterval(move, 50);}function move(){context.clearRect(0, 0, 400, 400);context.save();context.translate(200, 200);context.rotate(count * Math.PI / 45)drawSix();count++;if (count >= 360) count = 0;context.restore();}function drawSix() // 繪制正六邊形漩渦圖案{context.save();var colors = [’red’, ’yellow’,’green’, ’cyan’, ’blue’, ’purple’];var rotation = (2 * Math.sin(count /(3.14 * 20)));for (i = 0; i < 360; i++){context.strokeStyle = colors[i % 6];context.lineWidth = i / 200 + 1;context.beginPath();context.moveTo(0, 0);context.lineTo(0, i / 2);context.stroke();context.translate(0, i / 2);context.rotate((-60 + rotation) * 2 *Math.PI / 360);}context.restore();}</script></head><body onload='draw(’myCanvas’);'><canvas height='400'style='border:3px double #996633;'></canvas></body></html>

將上述HTML代碼保存到一個(gè)html文本文件中,再在瀏覽器中打開(kāi)包含這段HTML代碼的html文件,可以在瀏覽器窗口中看到一個(gè)更加生動(dòng)的不斷轉(zhuǎn)呀轉(zhuǎn)的正六邊形漩渦的旋轉(zhuǎn)動(dòng)畫(huà),如圖8所示。

JavaScript圖片旋轉(zhuǎn)效果實(shí)現(xiàn)方法詳解

圖8 更生動(dòng)的正六邊形漩渦的旋轉(zhuǎn)動(dòng)畫(huà)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日本a级不卡| 欧美aa一级| 在线综合亚洲| 伊人久久大香线蕉av不卡| 色婷婷久久久| 亚洲高清不卡| 蜜芽一区二区三区| 五月国产精品| 国产精品地址| 精品一区二区三区的国产在线观看 | 国产91久久精品一区二区| 高清不卡亚洲| 女同性一区二区三区人了人一| 亚洲网站视频| 亚洲欧美日本国产| 老司机精品视频网| 久久精品国产www456c0m| 综合激情五月婷婷| 久久精品国产在热久久| 久久国产亚洲精品| 国产美女一区| 国产精品日韩精品中文字幕| 韩国女主播一区二区三区| 欧美三级精品| 日本一不卡视频| 三级小说欧洲区亚洲区| 久久99伊人| 国产欧美高清| 激情欧美一区二区三区| 免费在线观看不卡| 日韩啪啪电影网| 久久高清一区| 精品一区电影| 视频在线观看91| 九九久久婷婷| 亚洲二区免费| 国产a亚洲精品| 日本不卡的三区四区五区| 亚洲午夜久久久久久尤物| 成人免费一区| 亚洲精品无播放器在线播放| 好吊日精品视频 | 久久精品国产999大香线蕉| 亚洲欧美日韩精品一区二区| 国产精品成久久久久| 日韩1区2区3区| 性色av一区二区怡红| 亚洲成人三区| 欧美香蕉视频| a天堂资源在线| 日韩avvvv在线播放| 国产视频一区免费看| 欧美搞黄网站| 91精品国产成人观看| 色婷婷色综合| 日韩88av| 中文字幕在线官网| 国产一区二区三区91| 久久精品国产一区二区| 国产精品一线天粉嫩av| 亚洲bt欧美bt精品777| 中文字幕av一区二区三区人 | 久久一级电影| 中国女人久久久| 日韩区欧美区| 色爱综合网欧美| re久久精品视频| 日韩精品一二区| 日韩精品视频在线看| 日本三级亚洲精品| 国产精品mv在线观看| 精品国产乱码久久久久久1区2匹| 美日韩一区二区三区| 日韩有吗在线观看| 国产欧美一区二区三区米奇| 精品三级av在线导航| 中文另类视频| 99精品综合| 免费一级片91| 91亚洲国产成人久久精品| 国产综合精品| 国产欧美成人| 黑人精品一区| 亚洲一区二区三区无吗| 国产精品porn| 国产超碰精品| 国精品一区二区| 日韩av在线播放中文字幕| 成人黄色av| 99xxxx成人网| 国产中文欧美日韩在线| 播放一区二区| 亚洲精品黄色| 91精品啪在线观看国产18 | 欧美亚洲国产精品久久| 麻豆精品新av中文字幕| 亚洲精品国产偷自在线观看| 丝袜美腿亚洲一区| 国产精品大片免费观看| 人人精品亚洲| 日本麻豆一区二区三区视频| 国产精品久久久久久久免费观看 | 午夜电影一区| 亚洲欧美日韩国产一区二区| 精品三级av在线导航| 中文字幕日韩欧美精品高清在线| 久久99精品久久久久久园产越南| 久久精品不卡| 久久中文精品| 日韩国产欧美在线播放| 免费毛片在线不卡| 精品视频免费| 青青国产91久久久久久| 尹人成人综合网| 久久久久久一区二区| 一区二区三区午夜视频| 高清日韩中文字幕| 91亚洲精品在看在线观看高清| 日韩精品久久久久久久电影99爱| 国产精品啊啊啊| 日韩一二三区在线观看| 日韩视频免费| 国产尤物精品| 久久精品国产68国产精品亚洲| 精品久久在线| 欧美激情精品| 中文字幕中文字幕精品| 六月婷婷一区| 99国产精品久久久久久久成人热 | 国产一区二区三区亚洲| 国产精品亲子伦av一区二区三区| 日韩精品欧美精品| 天堂久久av| 日韩不卡一区二区| 日韩欧美在线精品| 日韩在线黄色| 日韩av成人高清| 国产精品亚洲综合在线观看| 国产精品最新自拍| 久久99精品久久久野外观看| 久久成人av| 国产精品亚洲综合色区韩国| 亚洲精一区二区三区| 亚洲在线电影| 亚洲图片久久| 日韩一区欧美二区| 蜜臀av亚洲一区中文字幕| 中文字幕乱码亚洲无线精品一区| 在线综合欧美| 中文亚洲欧美| 色老板在线视频一区二区| 日韩av在线中文字幕| 美女视频网站久久| 久久中文字幕一区二区| 国产精品4hu.www| 精品一区二区男人吃奶 | 国产精品一区亚洲| 日韩成人a**站| 136国产福利精品导航网址| 午夜一级久久| 美腿丝袜在线亚洲一区| 九九九精品视频| 岛国av在线播放| 狠狠爱成人网| 国产欧美一区二区色老头| 老司机免费视频一区二区| 91精品综合| 国产伦一区二区三区| 日韩精品午夜| 奇米777国产一区国产二区| 欧美精品第一区| 不卡在线一区| 麻豆精品av| 午夜a一级毛片亚洲欧洲| 老牛影视精品| 国产精一区二区| 亚洲人成网站在线在线观看| 热三久草你在线| 国产伦精品一区二区三区在线播放| 欧洲精品一区二区三区| 日韩高清不卡一区| 日韩欧美二区| 国产一精品一av一免费爽爽| 欧美国产日韩电影| 日本久久成人网| 日本精品久久| 激情欧美一区| 色天使综合视频| 国产精品久久久久av电视剧| 精品三级av| 国产精品永久| 日韩激情视频网站| 日韩影院精彩在线| 日韩午夜在线| 欧美色图国产精品| 欧美日韩在线网站| 久久久精品久久久久久96| 91亚洲国产| av在线最新| 九九精品调教|