JavaScript+html5 canvas制作的百花齊放效果完整實(shí)例
本文實(shí)例講述了JavaScript+html5 canvas制作的百花齊放效果。分享給大家供大家參考,具體如下:
運(yùn)行效果截圖如下:
具體代碼如下:
<!DOCTYPE html> <html> <head> <title>demo</title> <style type="text/css"> body { margin:0; padding:0; } #canvas { border:5px solid gray; box-shadow:0 0 15px 15px #494949 inset; margin-top:50px; margin-left:200px; } </style> </head> <body > <canvas id="canvas" width="1000px" height="500px"></canvas> <script type="text/javascript"> var dyl = {}; dyl.canvas = document.getElementById("canvas"); dyl.ctx = dyl.canvas.getContext("2d"); dyl.runTime = 0; dyl.colorList = "01234567890ABCDEFabcdef".split(""); dyl.colorListLength = dyl.colorList.length; dyl.arcList = null; /** * 得到16進(jìn)制隨機(jī)顏色值 */ dyl.getColor = function() { var color = "#"; for(var i=0; i<6; i++) { color += dyl.colorList[Math.floor(Math.random()*dyl.colorListLength)]; } return color; }; /** * 一個(gè)隨機(jī)角度,隨機(jī)初始速度的斜拋對(duì)象 */ var Arc = function(i) { // 設(shè)置自有屬性 this.v = Math.round(Math.random()*100)+50; this.angle = Math.round(Math.random()*145) + 45; this.startTime = +new Date(); this._angle = this.angle/180*Math.PI; this.v_x = this.v*Math.cos(this._angle); this.v_y_start = this.v*Math.sin(this._angle); this.color = dyl.getColor(); this.x = 500; this.g = 250; this.y = 490; this.index = i; var _self = this; this.run = function() { var endTime = +new Date(); var timeSpan = (endTime - _self.startTime)/1000; var v_y_now = _self.v_y_start - 1/2*_self.g*Math.pow(timeSpan, 2); _self.x = _self.x +_self.v_x * timeSpan; _self.y = _self.y - (_self.v_y_start * timeSpan - 1/2*_self.g*Math.pow(timeSpan, 2)); return this; }; return this; }; /** * 全局繪制圖像 */ dyl.draw = function() { var arcList = dyl.arcList; var ctx = dyl.ctx; dyl.runTime++; for(var i=0, length=arcList.length; i<length; i++) { var arc = arcList[i]; if(!arc) { continue; } arc.run(); ctx.save(); ctx.beginPath(); ctx.fillStyle = arc.color; ctx.arc(arc.x, arc.y, 2, 0, Math.PI*2); ctx.fill(); ctx.closePath(); ctx.restore(); } console.log(dyl.runTime); if(dyl.runTime >= 25) { setTimeout(dyl.init, 1050); } else { setTimeout(dyl.draw, 20); } }; /** * 初始化整個(gè)事件 */ dyl.init = function() { dyl.ctx.clearRect(0, 0, 1000, 500); dyl.arcList = []; dyl.runTime = 0; for(var i=0; i<100; i++) { dyl.arcList.push(new Arc(i)); } dyl.draw(); }; dyl.init(); </script> </body> </html>
更多關(guān)于js特效相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《jQuery動(dòng)畫與特效用法總結(jié)》及《jQuery常見經(jīng)典特效匯總》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- JavaScript+html5 canvas實(shí)現(xiàn)本地截圖教程
- js+canvas繪制矩形的方法
- js+canvas簡(jiǎn)單繪制圓圈的方法
- js+canvas繪制五角星的方法
- JavaScript+html5 canvas制作的圓中圓效果實(shí)例
- JavaScript+html5 canvas繪制的小人效果
- JavaScript+html5 canvas制作色彩斑斕的正方形效果
- JavaScript html5 canvas畫布中刪除一個(gè)塊區(qū)域的方法
- JavaScript+html5 canvas繪制繽紛多彩的三角形效果完整實(shí)例
- JavaScript+html5 canvas繪制漸變區(qū)域完整實(shí)例
- JavaScript+html5 canvas繪制的圓弧蕩秋千效果完整實(shí)例
- JavaScript+canvas實(shí)現(xiàn)七色板效果實(shí)例
相關(guān)文章
原生JS實(shí)現(xiàn)匯率轉(zhuǎn)換功能代碼實(shí)例
這篇文章主要介紹了原生JS實(shí)現(xiàn)匯率轉(zhuǎn)換功能代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05分享javascript計(jì)算時(shí)間差的示例代碼
這篇文章主要為大家介紹了javascript計(jì)算時(shí)間差的示例代碼,,一般來說都是計(jì)算當(dāng)前時(shí)間和一個(gè)指定時(shí)間點(diǎn)之間的差距,感興趣的小伙伴們可以參考一下2016-01-01javascript 組合按鍵事件監(jiān)聽實(shí)現(xiàn)代碼
這篇文章主要介紹了javascript 組合按鍵事件監(jiān)聽實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02