午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > 用HTML5制作煙火效果的教程

用HTML5制作煙火效果的教程

熱門標簽:外呼線穩定線路 南通數據外呼系統推廣 pageadm實現地圖標注 邢臺縣地圖標注app 外呼系統電話怎么投訴 地圖標注位置能賺錢嗎 呼和浩特外呼電銷系統排名 申請400電話流程簡介 阜陽企業外呼系統

要過年了,過年想到的就是放煙火啦。。。。于是就用canvas寫了個放煙火的效果,鼠標點擊也會產生煙火,不過不要產生太多煙火哦,一個煙火散出的粒子是30到200個之間,當頁面上的粒子數量達到一定的時候,頁面就會很卡咯,我也沒特意去優化神馬的。以后有空再說吧。

  直接上DEMO吧:放煙火 

  原理很簡單。。。就寫一個煙火類以及碎屑類,實例化后讓它飛起來,然后到達某個點后,把這個煙火對象的dead屬性置為true,然后再實例化出一定數量的碎屑對象,并且給與碎屑對象隨機一個要到達的目標點,然后讓所有碎屑對象飛過去就行了。

  【煙火】

XML/HTML Code復制內容到剪貼板
  1. var Boom = function(x,r,c,boomArea,shape){  //煙火對象   
  2.             this.booms = [];   
  3.             this.x = x;   
  4.             this.y = (canvas.height+r);   
  5.             this.r = r;   
  6.             this.c = c;   
  7.             this.shape = shape || false;   
  8.             this.boomArea = boomArea;   
  9.             this.theta = 0;   
  10.             this.dead = false;   
  11.             this.ba = parseInt(getRandom(80 , 200));   
  12.         }   
  13.         Boom.prototype = {   
  14.             _paint:function(){     
  15.                 ctx.save();   
  16.                 ctx.beginPath();   
  17.                 ctx.arc(this.x,this.y,this.r,0,2*Math.PI);   
  18.                 ctx.fillStyle = this.c;   
  19.                 ctx.fill();   
  20.                 ctx.restore();   
  21.             },   
  22.             _move:function(){   
  23.                 var dx = this.boomArea.x - this.x , dy = this.boomArea.y - this.y;   
  24.                 thisthis.x = this.x+dx*0.01;   
  25.                 thisthis.y = this.y+dy*0.01;   
  26.   
  27.                 if(Math.abs(dx)<=this.ba && Math.abs(dy)<=this.ba){   
  28.                     if(this.shape){   
  29.                         this._shapBoom();   
  30.                     }   
  31.                     else this._boom();   
  32.                     this.dead = true;   
  33.                 }   
  34.                 else {   
  35.                     this._paint();   
  36.                 }   
  37.             },   
  38.             _drawLight:function(){   
  39.                 ctx.save();   
  40.                 ctx.fillStyle = "rgba(255,228,150,0.3)";   
  41.                 ctx.beginPath();   
  42.                 ctx.arc(this.x , this.y , this.r+3*Math.random()+1 , 0 , 2*Math.PI);   
  43.                 ctx.fill();   
  44.                 ctx.restore();   
  45.             },   
  46.             _boom:function(){    //普通爆炸   
  47.                 var fragNum = getRandom(30 , 200);   
  48.                 var style = getRandom(0,10)>=5? 1 : 2;   
  49.                 var color;   
  50.                 if(style===1){   
  51.                     color = {   
  52.                         a:parseInt(getRandom(128,255)),   
  53.                         b:parseInt(getRandom(128,255)),   
  54.                         c:parseInt(getRandom(128,255))   
  55.                     }   
  56.                 }   
  57.   
  58.                 var fanwei = parseInt(getRandom(300, 400));   
  59.                 for(var i=0;i<fragNum;i++){   
  60.                     if(style===2){   
  61.                         color = {   
  62.                             a:parseInt(getRandom(128,255)),   
  63.                             b:parseInt(getRandom(128,255)),   
  64.                             c:parseInt(getRandom(128,255))   
  65.                         }   
  66.                     }   
  67.                     var a = getRandom(-Math.PI, Math.PI);   
  68.                     var x = getRandom(0, fanwei) * Math.cos(a) + this.x;   
  69.                     var y = getRandom(0, fanwei) * Math.sin(a) + this.y;    
  70.                     var radius = getRandom(0 , 2)   
  71.                     var frag = new Frag(this.x , this.y , radius , color , x , y );   
  72.                     this.booms.push(frag);   
  73.                 }   
  74.             },   
  75.             _shapBoom:function(){    //有形狀的爆炸   
  76.                 var that = this;   
  77.                 putValue(ocas , octx , this.shape , 5, function(dots){   
  78.                     var dx = canvas.width/2-that.x;   
  79.                     var dy = canvas.height/2-that.y;   
  80.                     for(var i=0;i<dots.length;i++){   
  81.                         color = {a:dots[i].a,b:dots[i].b,c:dots[i].c}   
  82.                         var x = dots[i].x;   
  83.                         var y = dots[i].y;   
  84.                         var radius = 1;   
  85.                         var frag = new Frag(that.x , that.y , radius , color , x-dx , y-dy);   
  86.                         that.booms.push(frag);   
  87.                     }   
  88.                 })   
  89.             }   
  90.         }   


  【碎屑】

XML/HTML Code復制內容到剪貼板
  1. var Frag = function(centerX , centerY , radius , color ,tx , ty){   //煙火碎屑對象   
  2.             this.tx = tx;   
  3.             this.ty = ty;   
  4.             this.x = centerX;   
  5.             this.y = centerY;   
  6.             this.dead = false;   
  7.             this.centerX = centerX;   
  8.             this.centerY = centerY;   
  9.             this.radius = radius;   
  10.             this.color = color;   
  11.         }   
  12.   
  13.         Frag.prototype = {   
  14.             paint:function(){   
  15.                 ctx.save();   
  16.                 ctx.beginPath();   
  17.                 ctx.arc(this.x , this.y , this.radius , 0 , 2*Math.PI);   
  18.                 ctx.fillStyle = "rgba("+this.color.a+","+this.color.b+","+this.color.c+",1)";   
  19.                 ctx.fill()   
  20.                 ctx.restore();   
  21.             },   
  22.             moveTo:function(index){   
  23.                 thisthis.ty = this.ty+0.3;   
  24.                 var dx = this.tx - this.x , dy = this.ty - this.y;   
  25.                 this.x = Math.abs(dx)<0.1 ? this.tx : (this.x+dx*0.1);   
  26.                 this.y = Math.abs(dy)<0.1 ? this.ty : (this.y+dy*0.1);   
  27.                 if(dx===0 && Math.abs(dy)<=80){   
  28.                     this.dead = true;   
  29.                 }   
  30.                 this.paint();   
  31.             }   
  32.         }  


  讓碎屑產生虛影也很簡單,就是每次刷新畫布時,不是擦掉重繪,而是繪制透明度為0.1(如果想虛影更長,可以把這個值弄的更小)的背景顏色。然后虛影就可以做出來了。也就是:

           

XML/HTML Code復制內容到剪貼板
  1. ctx.save();   
  2.             ctx.fillStyle = "rgba(0,5,24,0.1)";   
  3.             ctx.fillRect(0,0,canvas.width,canvas.height);   
  4.             ctx.restore();  

  讓煙火形成自己想要的形狀,比如字體,圖片之類的,也很簡單,就是可以通過離屏canvas以及canvas的getImageData這個方法就可以做出來。離屏canvas,顧名思義就是離開屏幕的,也就是不可見的canvas,直接在js里面用document.createElement("canvas")就可以生成一個canvas dom對象了,只要不把這個dom對象賦給body,這個canvas對象就相當于一個離屏對象了,我們就可以獲取到這個離屏canvas的context對象,然后再用戶看不到的地方做任何我們想做的事情了。

  讓煙火形成自己想要的形狀就是先把文字或者圖片畫在離屏canvas上,然后用getImageData獲取畫布上的像素數組,然后遍歷數組,獲取有顏色的像素,也就是我們想要的內容,保存起來后,再放到主canvas對象中顯示出來。

  getImageData的像素處理我之前的博客上有講過,如果不會用的,請戳:隨便談談用canvas來實現文字圖片粒子化

  源碼地址:https://github.com/whxaxes/canvas-test/tree/gh-pages/src/Funny-demo/shotFire

標簽:辛集 蚌埠 鶴崗 德州 楊凌 撫順 內蒙古 黃山

巨人網絡通訊聲明:本文標題《用HTML5制作煙火效果的教程》,本文關鍵詞  用,HTML5,制作,煙火,效果,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《用HTML5制作煙火效果的教程》相關的同類信息!
  • 本頁收集關于用HTML5制作煙火效果的教程的相關信息資訊供網民參考!
  • 推薦文章
    中文字幕一区2区3区| 九九视频精品免费| 亚洲欧美在线视频| 视频直播国产精品| 日韩在线电影一区| 亚洲国产精品一区二区久久hs| 日本高清视频免费看| 一区精品在线播放| 久久久久久久色| 国内精品在线观看视频| 国产女主播喷水视频在线观看| 99精品视频在线免费观看| 国产精品女主播视频| 亚洲欧洲另类精品久久综合| 无码人妻丰满熟妇区96| 亚洲欧美日韩第一页| 日韩欧美一区二区一幕| 亚洲图片在线视频| 日韩综合一区二区| 亚洲黄一区二区三区| 欧美日韩一区二区三区四区| 美女av一区二区| 黑人中文字幕一区二区三区| 韩国中文字幕av| 国产在线一卡二卡| 久久九九电影| 一本一道综合狠狠老| 久久国内精品一国内精品| 久久久影院一区二区三区| 日本888xxxx| 国产精品久久久久久69| 亚洲手机成人高清视频| 亚洲男人的天堂在线| 国产欧美一区二区三区在线| 亚洲中文字幕无码中文字| 日韩av片在线免费观看| 激情小说亚洲一区| 欧美日韩精品一区二区三区| 国产精品aaa| 日本福利视频一区| 国产精品一区无码| 亚洲精品国久久99热| 4438全国亚洲精品在线观看视频| 国产精品网站免费| 亚洲不卡在线视频| 国产精品美女久久久久aⅴ| 一区二区三区视频免费在线观看| 老牛影视免费一区二区| 少妇精品无码一区二区免费视频| 美女视频免费一区| 精品sm在线观看| 国产高清在线精品一区二区三区| 国产乱叫456| 精品综合免费视频观看| 91tv亚洲精品香蕉国产一区7ujn| 国产一伦一伦一伦| 成人av中文字幕| 国产一区二区三区欧美| 毛葺葺老太做受视频| 久久亚洲欧洲| 久久久亚洲欧洲日产国码aⅴ| 少妇愉情理伦片bd| 成人一区在线观看| 日韩女优在线播放| 色播视频在线播放| 亚洲国产成人久久综合| 手机av在线网| 国产精品看片你懂得| 日韩精品手机在线观看| 国产一区二区三区日韩| 99理论电影网| 精品久久久免费视频| 欧美日韩中文字幕综合视频 | 国产高清视频免费在线观看| 亚洲地区一二三色| 超碰97免费观看| 久久精品国产亚洲a| 日韩av电影院| 国产成人精品一区二三区四区五区 | 日韩欧美精品在线观看视频| 国产欧美日韩视频在线观看| 久久久久亚洲av无码专区喷水| 91亚洲大成网污www| 免费电影一区| 成人精品一区二区三区四区 | 日本www在线视频| 中文字幕一区二区三区视频 | 精品欧美一区二区在线观看| 伊人在线视频观看| 丝袜美腿精品国产二区| 欧美日韩三级在线观看| 夜夜嗨av一区二区三区四区| 欧洲美一区二区三区亚洲| 欧美一区二区三区思思人| 日韩精品无码一区二区三区久久久| 欧美主播一区二区三区| 精品无人区无码乱码毛片国产| 亚洲第一天堂无码专区| 黄色小说在线观看视频| 久久视频这里只有精品| www.av黄色| 欧洲一区二区在线观看| 久久久久久久尹人综合网亚洲| 欧美激情在线一区| 日韩 欧美 精品| 亚洲欧美日韩在线高清直播| 国产精品久久国产精麻豆96堂| 91黄色免费观看| 黄色一级大片免费| 成人妖精视频yjsp地址| 日本视频一区二区在线观看| 国产夫妻自拍av| 91丨九色丨国产| 国产99久久久国产精品潘金网站| 性一交一乱一伧国产女士spa| 国产清纯在线一区二区www| 无码人妻精品一区二区蜜桃百度| av在线播放不卡| 九九九九免费视频| 日韩三级在线免费观看| 亚洲精品久久久久久国| 久久久人成影片一区二区三区观看| 激情五月少妇a| 久久久久久久久国产精品| 国内毛片毛片毛片毛片| 国产精品偷伦视频免费观看国产| 另类小说视频一区二区| 日本一区美女| 亚洲美女区一区| 久久一区二区电影| 91精品国产91久久久久久不卡| 99精品久久只有精品| 丝袜美腿中文字幕| 国产精品久久久久一区二区| 国产精品视频看| 久久免费激情视频| av磁力番号网| 91精品午夜视频| 天堂va蜜桃一区二区三区 | 午夜影院在线视频| 777久久精品一区二区三区无码| 欧美另类z0zxhd电影| 无码人妻精品一区二区蜜桃色欲 | 日韩欧美一二三区| 人妻中文字幕一区| 日韩av在线第一页| www高清在线视频日韩欧美| 天天操天天射天天舔| 美女一区二区三区视频| 欧美日韩国产成人高清视频| 中文字幕精品在线不卡| 91视频免费在线看| 亚洲最大色综合成人av| 亚洲人成电影网站色www| 国产成人aaa| www.超碰97| 国产精品国产精品| 日韩亚洲欧美成人一区| 丁香婷婷综合色啪| 国产无遮挡免费视频| 成人一对一视频| 91影院在线免费观看视频| 亚洲成avwww人| 午夜在线视频免费| 久久久久亚洲精品成人网小说| 成人免费视频国产免费麻豆| 精品无码av无码免费专区| 欧美高清视频不卡网| 一区两区小视频| 国产在线播放观看| 欧美一卡二卡三卡四卡| 国产91免费在线观看| av免费播放网址| 亚洲男子天堂网| 久久er精品视频| 人妖粗暴刺激videos呻吟| 成人h视频在线| 欧美视频13p| 国内精品久久久久久久久久久| 91视频最新入口| 韩国日本不卡在线| 性做久久久久久免费观看欧美| 免费成人美女在线观看| 91在线无精精品白丝| 日韩一区二区高清视频| 91麻豆国产精品| 国产一区二区欧美日韩| 91极品视觉盛宴| 国产午夜精品理论片a级大结局 | 精品国产sm最大网站免费看| 亚洲激情第一区| 久久久天堂av| 国产一区二区三区在线观看免费视频 | 黄色av网址在线观看| 欧美精品一区二区三区久久| 韩剧1988在线观看免费完整版| 欧美激情视频在线观看| 一区二区免费在线播放| 日本网站在线观看一区二区三区 | 久久综合导航| 亚洲综合图片网| 亚洲熟女毛茸茸| 99精品一区二区三区无码吞精 | 欧美日韩电影一区二区| 欧美一区二区三区成人久久片| 粉嫩精品一区二区三区在线观看 | 91成人国产精品| 亚洲超丰满肉感bbw| 欧美日韩成人免费观看| 国产精品麻豆入口| 色婷婷成人在线| 久久精品xxx| 中国 免费 av| 国产午夜精品视频一区二区三区| 中文字幕乱码免费| 日韩av在线电影观看| 欧美乱偷一区二区三区在线| 久久99久久精品国产| 欧美自拍视频在线| 国产成人精品a视频一区www| 国产精品羞羞答答| 亚洲精品日产aⅴ| 国产一区免费在线| 亚洲精品成人三区| 中国一区二区三区| 免费观看亚洲视频| 国产资源第一页| 亚洲国产一区在线| 青青草原亚洲| 国产精品yjizz| 99国产超薄肉色丝袜交足的后果| 久久精品国产精品| 国产亚洲视频在线| 国产精品h视频| 伊人色综合影院| 国产美女18xxxx免费视频| 国产免费无码一区二区| 中文字幕高清不卡| 成人毛片网站| 国产中文字幕久久| 亚洲最大的成人av| 国产午夜精品久久久 | 欧美精品18videos性欧美| 国产一区二区视频播放| 最新中文字幕视频| 精品国产成人亚洲午夜福利| 肥臀熟女一区二区三区| 在线视频免费一区二区| 亚洲午夜在线观看| 日韩视频 中文字幕| 国产精品18在线| 欧美国产精品中文字幕| 久久777国产线看观看精品| 草民午夜欧美限制a级福利片| heyzo国产| 人妻少妇精品无码专区久久| 欧美日韩成人综合在线一区二区| 一本一道久久a久久精品综合| 99久久国产综合精品女不卡| 超碰国产精品久久国产精品99| 波多野结衣亚洲一区二区| 国产91精品在线观看| 最近2019中文字幕mv免费看| 国产香蕉97碰碰久久人人| 日本a级片久久久| 国产视频一区二区三| 日韩欧美国产一区二区三区| 91精品国产综合久久久久久久久| 99久久人妻无码精品系列| 黄色片视频免费| 99国产精品一区| 亚洲成人av资源网| 国产精品日韩一区二区三区| 久久久久亚洲av无码麻豆| 久久一日本道色综合久久| 一区二区三区四区视频| 亚洲欧洲国产视频| 韩国毛片一区二区三区| 亚洲性av网站| 久久6免费视频| aaa亚洲精品一二三区| 手机成人av在线| 亚洲在线观看免费视频| 波多野结衣天堂| 夜夜精品视频一区二区| av免费中文字幕| 男女激情视频一区| 日韩精品一二三四区| 粉嫩av蜜桃av蜜臀av| 亚洲欧美日韩在线播放| 欧美xxxx黑人又粗又长精品| 日韩性xxxx| 欧美高跟鞋交xxxxhd| 在线视频福利一区| 911国产在线| 2020国产精品自拍| 海角国产乱辈乱精品视频| 精品人妻二区中文字幕| 国产v综合v亚洲欧| 国产欧美在线观看| 日韩中文字幕麻豆| 一区二区欧美激情| 久久午夜精品视频| 欧美日韩成人高清| 黄色录像一级片| 欧美亚洲午夜视频在线观看| 久久久久久av无码免费看大片| 99九九视频| 久久综合九色综合欧美就去吻| 粉嫩av一区二区三区天美传媒 | 久久久性生活视频| 麻豆精品新av中文字幕| 国产精品黄页免费高清在线观看| 亚洲综合视频网站| 最新成人av在线| 国产欧美一区二区在线播放| 亚洲国产成人精品激情在线| 狠狠做深爱婷婷久久综合一区| 91免费看网站| 久久久成人免费视频| 日韩视频―中文字幕| 成人性生活毛片| 91精品国产综合久久香蕉麻豆| 男女高潮又爽又黄又无遮挡| 成人一区二区视频| 男人添女人下部高潮视频在观看| 欧美性受极品xxxx喷水| 国产情侣呻吟对白高潮| 91在线高清免费观看| 国产精品成人免费| 国产小视频你懂的| 国产在线精品一区二区三区》| 亚洲欧洲99久久| 色一情一区二区三区| 欧美老人xxxx18| 国语对白做受xxxxx在线中国| 亚洲午夜久久久久中文字幕久| 天天摸天天碰天天添| 国产精品激情偷乱一区二区∴| 久久国产这里只有精品| 亚洲高清在线精品| 免费在线观看你懂的| 中文字幕av一区中文字幕天堂| 欧美xxxx×黑人性爽| 精品女同一区二区三区在线播放 | 少妇又紧又色又爽又刺激视频 | 日本国产在线视频| 国产香蕉精品视频一区二区三区| 成人公开免费视频| 97视频免费在线观看| 这里只有精品国产| 91亚洲人电影| 日本一区二区久久| 国产奶水涨喷在线播放| 欧美精品久久久| 亚洲国产精品人久久电影| 免费成人av在线播放| 中文字幕精品亚洲| 91视频九色网站| 国产精品久久久久永久免费观看| 超碰在线资源站| 色婷婷av久久久久久久| 美女洗澡无遮挡| 国产一区在线观看麻豆| 国产又大又黄又粗| 欧洲成人在线观看| 葵司免费一区二区三区四区五区| 日韩av一级大片| 欧美日韩激情视频| 欧美激情图片小说| 国产精品美乳一区二区免费| 久久天天做天天爱综合色| 日韩在线观看a| 欧美日韩免费一区| 能免费看av的网站| 亚洲激情国产精品| 国产欧美久久久精品免费| 粉嫩av四季av绯色av第一区| 99视频精品全部免费在线| 精品伦一区二区三区| 久久久久久久国产| 久久久久久一二三区| 91精品国产三级| 欧美精品一区男女天堂| 天堂在线观看视频| 四川一级毛毛片| 亚洲精品9999| 高清欧美电影在线| 日韩精品一二三四区| 国产精品久久久久aaaa樱花| 欧美精品二区三区| 亚洲少妇一区二区三区| 高清一区二区三区视频| 亚洲精品ady| 三级在线观看网站| 天天干天天干天天干天天干天天干| 一区二区三区四区视频| 麻豆精品精品国产自在97香蕉| 九九热免费在线观看| 55夜色66夜色国产精品视频| 色综合久久中文综合久久牛| www.香蕉视频| 国产日韩一区二区在线| 日韩精品一区二区三区中文精品| 日日欢夜夜爽一区| 亚洲天堂岛国片| 国产综合第一页| 欧美成人国产va精品日本一级| 激情五月播播久久久精品| 久久久久久久高清|