精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

canvas學(xué)習(xí)筆記:小小滴公式,大大滴樂趣

開發(fā) 前端
最近想弄一個(gè)網(wǎng)頁,把自己學(xué)HTML5過程中做的部分DEMO放上去做集合,但是,如果就僅僅做個(gè)網(wǎng)頁把所有DEMO一個(gè)一個(gè)排列又覺得太難看了。就想,既然學(xué)了canvas,那就來折騰下瀏覽器,做個(gè)小小的開場動(dòng)畫吧。

最近想弄一個(gè)網(wǎng)頁,把自己學(xué)HTML5過程中做的部分DEMO放上去做集合,但是,如果就僅僅做個(gè)網(wǎng)頁把所有DEMO一個(gè)一個(gè)排列又覺得太難看了。就想,既然學(xué)了canvas,那就來折騰下瀏覽器,做個(gè)小小的開場動(dòng)畫吧。

開場動(dòng)畫的效果,想了一會(huì),決定用粒子,因?yàn)橛X得粒子比較好玩。還記得以前我寫的***篇技術(shù)博文,就是講文字圖片粒子化的:文字圖片粒子化 , 那時(shí)就僅僅做的是直線運(yùn)動(dòng),順便加了一點(diǎn)3D效果。運(yùn)動(dòng)公式很簡單。所以就想這個(gè)開場動(dòng)畫就做的更動(dòng)感一些吧。

先上DEMO:http://2.axescanvas.sinaapp.com/demoHome/index.html

效果是不是比直線的運(yùn)動(dòng)更加動(dòng)感呢?而且也確實(shí)很簡單,別忘了這篇博文的題目,小小滴公式,大大滴樂趣。要做出這樣的效果,用的就僅僅是我們初中。。或者高中時(shí)候的物理知識(shí),加速運(yùn)動(dòng),減速運(yùn)動(dòng)的公式啦。所以確實(shí)是小小滴公式。樓主很喜歡折騰一些酷炫的東西,雖然可能平時(shí)工作上用不上,但是,這樂趣確實(shí)很讓人著迷啊。而且,做下這些也可以加強(qiáng)一下編程的思維能力哈。

廢話不多說,進(jìn)入主題啦。就簡單的解釋一下原理吧~~~

粒子運(yùn)動(dòng)的核心代碼就這么一點(diǎn):

  1. update:function(time){  
  2.             this.x += this.vx*time;  
  3.             this.y += this.vy*time;  
  4.  
  5.             if(!this.globleDown&&this.y>0){  
  6.                 var yc = this.toy - this.y;  
  7.                 var xc = this.tox - this.x;  
  8.  
  9.                 this.jl = Math.sqrt(xc*xc+yc*yc);  
  10.  
  11.                 var za = 20;  
  12.  
  13.                 var ax = za*(xc/this.jl),  
  14.                     ay = za*(yc/this.jl),  
  15.                     vx = (this.vx+ax*time)*0.97,  
  16.                     vy = (this.vy+ay*time)*0.97;  
  17.  
  18.                 this.vx = vx;  
  19.                 this.vy = vy;  
  20.  
  21.             }else {  
  22.                 var gravity = 9.8;  
  23.                 var vy = this.vy+gravity*time;  
  24.  
  25.                 if(this.y>canvas.height){  
  26.                     vy = -vy*0.7;  
  27.                 }  
  28.  
  29.                 this.vy = vy;  
  30.             }  
  31.         }, 

粒子總共有兩種狀態(tài),一種是自由落體,一種就是受到吸力。自由落體就不說了。說吸力之前先貼出粒子的屬性:

  1. var Dot = function(x,y,vx,vy,tox,toy,color){  
  2.         this.x=x;  
  3.         this.y=y;  
  4.         this.vx=vx;  
  5.         this.vy=vy;  
  6.         this.nextox = tox;  
  7.         this.nextoy = toy;  
  8.         this.color = color;  
  9.         this.visible = true;  
  10.         this.globleDown = false;  
  11.         this.setEnd(tox , toy);  
  12.     }  
  13.  
  14. setEnd:function(tox , toy){  
  15.             this.tox = tox;  
  16.             this.toy = toy;  
  17.             var yc = this.toy - this.y;  
  18.             var xc = this.tox - this.x;  
  19.         }, 

x,y就是粒子的位置,vx是粒子水平速度,vy是粒子的垂直速度,nexttox之類知不知道都無所謂,只是暫時(shí)保存變量的。tox,和toy就是粒子的目的地位置。

首先,先給予所有粒子一個(gè)目的地,這個(gè)目的地下面再會(huì)說。也就是要粒子到達(dá)的地方,然后再定義一個(gè)變量za作為加速度,具體數(shù)值的話,就自己多測試下就會(huì)有大概參數(shù)的了,我設(shè)成20,感覺就差不多了。za是粒子和目的地之間連線的加速度,所以,我們通過粒子的位置和目的地的位置,通過簡單的三角函數(shù),就可以把粒子的水平加速度和垂直加速度求出來了,就這段

  1. var ax = za*(xc/this.jl),  
  2.  ay = za*(yc/this.jl), 

有了水平加速度和垂直加速度后,接下來就更簡單了,直接計(jì)算水平速度和垂直速度的增量,從而改變水平速度和垂直速度的值

  1. vx = (this.vx+ax*time)*0.97,  
  2. vy = (this.vy+ay*time)*0.97; 

之所以要乘于0.97是為了模擬能量損耗,粒子才會(huì)減速。time是每一幀的時(shí)間差

計(jì)算出速度后就更新粒子位置就行了。

  1. this.x += this.vx*time;  
  2. this.y += this.vy*time; 

因?yàn)榱W釉陲w行過程中,與目的地之間的連線方向是不停改變的,所以每一幀都要重新計(jì)算粒子的水平加速度和垂直加速度。

運(yùn)動(dòng)原理就是如此,是否很簡單呢。

運(yùn)動(dòng)原理說完了,再扯一下上面那個(gè)動(dòng)畫的具體實(shí)現(xiàn)吧:動(dòng)畫初始化,在一個(gè)離屏canvas上把想要的字或者圖片畫出來,然后再通過getImageData這個(gè)方法獲取離屏canvas的像素。然后用一個(gè)循環(huán),把離屏canvas中有繪制的區(qū)域找出來,因?yàn)閕mageData里的data值就是一個(gè)rgba數(shù)組,所以我們判斷***一個(gè)的值也就是透明度大于128就是有繪制過的區(qū)域。然后獲取該區(qū)域的xy值,為了防止粒子對(duì)象過多導(dǎo)致頁面卡頓,所以我們就限制一下粒子的數(shù)量,取像素的時(shí)候x值和y值每次遞增2,從而減少粒子數(shù)量。

  1. this.osCanvas = document.createElement("canvas");  
  2.         var osCtx = this.osCanvas.getContext("2d");  
  3.  
  4.         this.osCanvas.width = 1000;  
  5.         this.osCanvas.height = 150;  
  6.  
  7.         osCtx.textAlign = "center";  
  8.         osCtx.textBaseline = "middle";  
  9.         osCtx.font="70px 微軟雅黑,黑體 bold";  
  10.         osCtx.fillStyle = "#1D181F" 
  11.         osCtx.fillText("WelCome" , this.osCanvas.width/2 , this.osCanvas.height/2-40);  
  12.         osCtx.fillText("To wAxes' HOME" , this.osCanvas.width/2 , this.osCanvas.height/2+40);  
  13.         var bigImageData = osCtx.getImageData(0,0,this.osCanvas.width,this.osCanvas.height);  
  14.  
  15.         dots = [];  
  16.  
  17.         for(var x=0;x<bigImageData.width;x+=2){  
  18.             for(var y=0;y<bigImageData.height;y+=2){  
  19.                 var i = (y*bigImageData.width + x)*4;  
  20.                 if(bigImageData.data[i+3]>128){  
  21.                     var dot = new Dot(  
  22.                         Math.random()>0.5?Math.random()*20+10:Math.random()*20+canvas.width-40,  
  23.                         -Math.random()*canvas.height*2,  
  24.                         0,  
  25.                         0,  
  26.                         x+(canvas.width/2-this.osCanvas.width/2),  
  27.                         y+(canvas.height/2-this.osCanvas.height/2),  
  28.                         "rgba("+bigImageData.data[i]+","+bigImageData.data[i+1]+","+bigImageData.data[i+2]+",1)" 
  29.                     );  
  30.                     dot.setEnd(canvas.width/2,canvas.height/2)  
  31.                     dots.push(dot);  
  32.                 }  
  33.             }  
  34.         } 

通過循環(huán)獲取到粒子的位置xy值后,把位置賦給粒子,成為粒子的目的地。然后動(dòng)畫開始,就可以做出文字圖片粒子化的效果了。

#p#

下面貼出動(dòng)畫實(shí)現(xiàn)的js代碼。如果對(duì)其他代碼也有興趣的,可以直接看控制臺(tái)哈,沒壓縮的。

  1. var part_1 = (function(w){  
  2.     var dots = [],DOT_SIZE = 2,cube=null;  
  3.  
  4.     var Dot = function(x,y,vx,vy,tox,toy,color){  
  5.         this.x=x;  
  6.         this.y=y;  
  7.         this.vx=vx;  
  8.         this.vy=vy;  
  9.         this.nextox = tox;  
  10.         this.nextoy = toy;  
  11.         this.color = color;  
  12.         this.visible = true;  
  13.         this.globleDown = false;  
  14.         this.setEnd(tox , toy);  
  15.     }  
  16.  
  17.     Dot.prototype = {  
  18.         paint:function(){  
  19.             ctx.fillStyle=this.color;  
  20.             ctx.fillRect(this.x-DOT_SIZE/2 , this.y-DOT_SIZE/2 , DOT_SIZE , DOT_SIZE);  
  21.         },  
  22.  
  23.         setEnd:function(tox , toy){  
  24.             this.tox = tox;  
  25.             this.toy = toy;  
  26.             var yc = this.toy - this.y;  
  27.             var xc = this.tox - this.x;  
  28.             // this.initjl = Math.sqrt(xc*xc+yc*yc);  
  29.         },  
  30.  
  31.         update:function(time){  
  32.             this.x += this.vx*time;  
  33.             this.y += this.vy*time;  
  34.  
  35.             if(!this.globleDown&&this.y>0){  
  36.                 var yc = this.toy - this.y;  
  37.                 var xc = this.tox - this.x;  
  38.  
  39.                 this.jl = Math.sqrt(xc*xc+yc*yc);  
  40.  
  41.                 var za = 20;  
  42.  
  43.                 var ax = za*(xc/this.jl),  
  44.                     ay = za*(yc/this.jl),  
  45.                     vx = (this.vx+ax*time)*0.97,  
  46.                     vy = (this.vy+ay*time)*0.97;  
  47.  
  48.                 this.vx = vx;  
  49.                 this.vy = vy;  
  50.  
  51.                 // if(Math.abs(this.vx)<1&&Math.abs(this.vy)<1){  
  52.                 //     this.y = this.toy  
  53.                 //     this.x = this.tox  
  54.                 // }  
  55.             }else {  
  56.                 var gravity = 9.8;  
  57.                 var vy = this.vy+gravity*time;  
  58.  
  59.                 if(this.y>canvas.height){  
  60.                     vy = -vy*0.7;  
  61.                 }  
  62.  
  63.                 this.vy = vy;  
  64.             }  
  65.         },  
  66.  
  67.         loop:function(time){  
  68.             this.update(time);  
  69.             this.paint();  
  70.         }  
  71.     }  
  72.  
  73.       
  74.  
  75.     var animate = function(){  
  76.         this.state = "before" 
  77.     }  
  78.  
  79.     var ap = animate.prototype;  
  80.  
  81.     ap.init = function(){  
  82.         this.osCanvas = document.createElement("canvas");  
  83.         var osCtx = this.osCanvas.getContext("2d");  
  84.  
  85.         this.osCanvas.width = 1000;  
  86.         this.osCanvas.height = 150;  
  87.  
  88.         osCtx.textAlign = "center";  
  89.         osCtx.textBaseline = "middle";  
  90.         osCtx.font="70px 微軟雅黑,黑體 bold";  
  91.         osCtx.fillStyle = "#1D181F" 
  92.         osCtx.fillText("WelCome" , this.osCanvas.width/2 , this.osCanvas.height/2-40);  
  93.         osCtx.fillText("To wAxes' HOME" , this.osCanvas.width/2 , this.osCanvas.height/2+40);  
  94.         var bigImageData = osCtx.getImageData(0,0,this.osCanvas.width,this.osCanvas.height);  
  95.  
  96.         dots = [];  
  97.  
  98.         for(var x=0;x<bigImageData.width;x+=2){  
  99.             for(var y=0;y<bigImageData.height;y+=2){  
  100.                 var i = (y*bigImageData.width + x)*4;  
  101.                 if(bigImageData.data[i+3]>128){  
  102.                     var dot = new Dot(  
  103.                         Math.random()>0.5?Math.random()*20+10:Math.random()*20+canvas.width-40,  
  104.                         -Math.random()*canvas.height*2,  
  105.                         0,  
  106.                         0,  
  107.                         x+(canvas.width/2-this.osCanvas.width/2),  
  108.                         y+(canvas.height/2-this.osCanvas.height/2),  
  109.                         "rgba("+bigImageData.data[i]+","+bigImageData.data[i+1]+","+bigImageData.data[i+2]+",1)" 
  110.                     );  
  111.                     dot.setEnd(canvas.width/2,canvas.height/2)  
  112.                     dots.push(dot);  
  113.                 }  
  114.             }  
  115.         }  
  116.         console.log(dots.length)  
  117.     }  
  118.  
  119.     ap.changeState = function(){  
  120.         var osCtx = this.osCanvas.getContext("2d");  
  121.         osCtx.clearRect(0,0,this.osCanvas.width,this.osCanvas.height);  
  122.         this.osCanvas.width = 460;  
  123.         this.osCanvas.height = 100;  
  124.  
  125.         osCtx.fillStyle="#5C5656" 
  126.         osCtx.fillRect(20,20,60,60)  
  127.  
  128.         drawLogo(this.osCanvas , osCtx);  
  129.  
  130.         var bigImageData = osCtx.getImageData(0,0,this.osCanvas.width,this.osCanvas.height);  
  131.  
  132.         var index=0;  
  133.         dots.sort(function(a , b){  
  134.             return Math.random()-Math.random();  
  135.         })  
  136.         for(var x=0;x<bigImageData.width;x+=2){  
  137.             for(var y=0;y<bigImageData.height;y+=2){  
  138.                 var i = (y*bigImageData.width + x)*4;  
  139.                 if(bigImageData.data[i+3]>128){  
  140.                         var d = dots[index];  
  141.                         if(d){  
  142.                             d.setEnd(x+(canvas.width/2-300) , y+50)  
  143.                             d.color = "rgba("+bigImageData.data[i]+","+bigImageData.data[i+1]+","+bigImageData.data[i+2]+",1)";  
  144.                             index++  
  145.                         }  
  146.                 }  
  147.             }  
  148.         }  
  149.  
  150.         setTimeout(function(){  
  151.             var endindex = index;  
  152.             for(var i=0;i<dots.length-endindex;i++){  
  153.                 if(dots[index]){  
  154.                     var d = dots[index];  
  155.                       
  156.                     d.globleDown = true;  
  157.                     d.vx = Math.random()*100-50;  
  158.                 }  
  159.                 index++;  
  160.             }  
  161.         } , 2000)  
  162.     }  
  163.  
  164.  
  165.     function endState(){  
  166.         canvas.width = 600;  
  167.         canvas.height = 100;  
  168.         canvas.style.display="block";  
  169.         canvas.style.top = "50px";  
  170.         canvas.style.left = (window.innerWidth-canvas.width)/2+"px";  
  171.         cube = new Cube(50);  
  172.         cube._initVector(50,50);  
  173.     }  
  174.  
  175.     function drawLogo(canvas , ctx){  
  176.         ctx.textAlign = "center";  
  177.         ctx.textBaseline = "middle";  
  178.         ctx.font="65px 微軟雅黑,黑體 bold" 
  179.         ctx.fillStyle="#E06D2F" 
  180.         ctx.fillText("DEMO" , 300 , canvas.height/2)  
  181.  
  182.         ctx.font="40px 微軟雅黑,黑體 bold" 
  183.         ctx.fillStyle="#405159" 
  184.         ctx.fillText("吖猩的" , 160 , canvas.height/2)  
  185.         ctx.fillText("小窩" , 420 , canvas.height/2)  
  186.     }  
  187.  
  188.     var num = 0;  
  189.     ap.update = function(time){  
  190.         time = time/100;  
  191.         if(this.state==="first"||this.state==="before"){  
  192.             var completeNum = 0;  
  193.             dots.forEach(function(dot){  
  194.                 if(dot.visible) dot.loop(time);  
  195.                 if(dot.jl<5){  
  196.                     completeNum++  
  197.                 }  
  198.             });  
  199.             if(completeNum>=5*dots.length/6){  
  200.                   
  201.                 if(this.state==="before"){  
  202.                     this.state = "first";  
  203.                     dots.forEach(function(dot){  
  204.                         dot.setEnd(dot.nextox , dot.nextoy);  
  205.                     });  
  206.                 }else {  
  207.                     this.state = "second";  
  208.                     this.changeState();  
  209.                 }  
  210.             }  
  211.         }else if(this.state==="second"){  
  212.             var completeNum = 0,  
  213.                 allnum = 0;  
  214.             dots.forEach(function(dot){  
  215.                 if(dot.visible) dot.loop(time);  
  216.                 if(dot.globleDown){  
  217.                     allnum++;  
  218.                     if(Math.abs(dot.y-canvas.height)<2){  
  219.                         completeNum++  
  220.                     }  
  221.                 }  
  222.             });  
  223.  
  224.             if(completeNum===allnum&&allnum!==0){  
  225.                 this.state = "third";  
  226.                 part_2.animate();  
  227.                 endState();  
  228.             }  
  229.         }else if(this.state==="third"){  
  230.             cube.update();  
  231.             drawLogo(canvas , ctx);  
  232.         }  
  233.     }  
  234.  
  235.     return new animate();  
  236. })(window) 

原文鏈接:http://www.cnblogs.com/axes/p/3606566.html

責(zé)任編輯:林師授 來源: 博客園
相關(guān)推薦

2022-08-15 09:23:07

IP耦合

2022-09-05 19:48:01

日志軟件

2011-06-06 13:58:57

臺(tái)式機(jī)推薦

2017-11-27 06:30:25

IP耦合架構(gòu)

2017-11-27 08:30:50

公共庫耦合架構(gòu)

2024-01-07 19:48:12

2015-06-24 15:40:01

機(jī)器學(xué)習(xí)云平臺(tái)微軟Azure

2021-03-24 14:32:44

人工智能深度學(xué)習(xí)

2021-07-05 08:12:53

Nginx架構(gòu)多進(jìn)程

2019-10-22 20:31:33

戴爾

2020-02-24 10:58:03

機(jī)器學(xué)習(xí)工具人工智能

2009-07-14 16:08:41

WebWork學(xué)習(xí)

2011-03-17 16:43:49

2014-03-24 22:11:50

博通芯片博通運(yùn)營商網(wǎng)絡(luò)

2024-02-19 08:22:13

console信息網(wǎng)站

2009-06-15 11:33:44

無線路由器WGR612NETGEAR

2023-11-03 10:15:49

2011-09-13 11:41:18

2021-01-19 05:27:44

HTTPSECDHE算法

2020-07-20 16:46:58

戴爾
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

免费成人av电影| 亚洲欧美综合图区| 高清在线视频日韩欧美| 制服丝袜第一页在线观看| 欧美大胆性生话| 国产精品成人一区二区艾草| 国产精品swag| 一区二区三区黄| 亚洲深夜影院| 久久综合色影院| 少妇光屁股影院| 国产精品igao视频网网址不卡日韩| 午夜视频在线观看一区| 亚洲一区二三| 免费在线超碰| 成人黄色网址在线观看| 国产精品视频久久久| 国产乡下妇女做爰视频| 天天影视欧美综合在线观看| 日韩毛片在线观看| 性生交大片免费看l| 国产成人精品一区二区三区视频| 性做久久久久久免费观看欧美| 日韩在线三级| 深夜福利在线观看直播| 国产99精品国产| 国产欧亚日韩视频| 自拍偷拍校园春色| 媚黑女一区二区| 欧美国产日韩一区二区三区| 激情无码人妻又粗又大| 九九久久精品| 亚洲精品久久视频| 久久久久中文字幕亚洲精品| 欧美成人aaa| 在线欧美日韩国产| av片中文字幕| 悠悠资源网亚洲青| 亚洲已满18点击进入久久| 中文字幕中文字幕99| eeuss影院www在线观看| 久久久久国产精品免费免费搜索| 国产精品久久7| 国产xxxxxx| 国产精品99久久久久久久女警| 国产欧美日韩精品丝袜高跟鞋| 无码人妻av免费一区二区三区| 欧美亚洲自偷自偷| 538国产精品一区二区免费视频| 日韩免费黄色片| 99精品视频免费观看| 欧美黑人性猛交| 亚洲激情视频一区| 在线亚洲国产精品网站| 欧美最顶级丰满的aⅴ艳星| 久久久久久久久久免费视频| 国产欧美三级| 国产成人jvid在线播放| 特级西西444www大胆免费看| 日韩激情在线观看| 国产精品视频26uuu| 在线播放国产一区| 国产精品一二一区| 国产精品国产三级国产专区53| 亚洲精品911| 91亚洲精品一区二区乱码| 久久综合一区二区三区| 国产精品一二三区视频| 中文在线资源观看网站视频免费不卡| 亚洲一区三区| 欧美xxxxhdvideosex| 亚洲福利一区二区三区| 乱妇乱女熟妇熟女网站| 一二区成人影院电影网| 3d成人动漫网站| 国产ts在线观看| 神马久久影院| 日韩在线小视频| 精品99久久久久成人网站免费 | 国产精品一区二区免费不卡| 成人毛片网站| 黄色在线观看网| 中文字幕亚洲一区二区av在线| 日本精品福利视频| 中文在线аv在线| 在线观看91精品国产麻豆| 折磨小男生性器羞耻的故事| 欧美男同视频网| 欧美成人黑人xx视频免费观看| 日本一区二区免费在线观看| 日本网站在线观看一区二区三区| 亚洲一区美女视频在线观看免费| 天堂在线视频免费| 综合久久一区二区三区| 男人天堂av片| 国产综合色在线观看| 日韩女优av电影| 人妻一区二区视频| 欧美先锋影音| 国产精品专区第二| 性猛交xxxx| 亚洲女厕所小便bbb| 可以在线看的黄色网址| 亚洲精品国产九九九| 国产一区二区三区精品久久久 | 西西裸体人体做爰大胆久久久| 91精品久久久久久久久久久| 丝袜+亚洲+另类+欧美+变态| 亚洲欧美国产77777| 国产综合免费视频| 国产伦精品一区二区三区免费优势| 中日韩美女免费视频网站在线观看| 动漫精品一区一码二码三码四码| 久久综合综合久久综合| 欧美国产综合视频| 91九色美女在线视频| 91精品国产综合久久久久| 久久美女免费视频| 一区二区三区国产盗摄 | 国产av无码专区亚洲a∨毛片| 久久久国产精华| 欧美色图色综合| 国产成人精品福利| 久久99热精品这里久久精品| 亚洲自拍第二页| 久久精品亚洲精品国产欧美| 极品美女扒开粉嫩小泬| 综合成人在线| 欧美激情一二三| 国产黄色免费大片| 亚洲精品精品亚洲| 交换做爰国语对白| 欧美电影免费播放| 国产美女久久久| 91se在线| 欧美麻豆精品久久久久久| 日本理论中文字幕| 日韩—二三区免费观看av| 蜜桃欧美视频| 电影网一区二区| 精品中文字幕久久久久久| 日本少妇在线观看| 成人国产精品免费观看动漫| 国产日韩亚洲欧美在线| 91麻豆精品激情在线观看最新| 伦理中文字幕亚洲| 国产高潮在线观看| 一区二区免费看| 怡红院一区二区| 日韩视频久久| 鲁片一区二区三区| 天天免费亚洲黑人免费| 国产亚洲视频中文字幕视频| 夜夜躁日日躁狠狠久久av| 国产日韩欧美电影| 在线免费看v片| 欧美深夜福利| 久久精品午夜一区二区福利| 五月天av在线| 中文字幕免费国产精品| 国产精品久久影视| 一级女性全黄久久生活片免费| 久久久精品人妻一区二区三区| 亚洲视频综合| 麻豆传媒一区二区| h1515四虎成人| 久久天堂电影网| 亚洲精品久久久久久久久久| 五月婷婷久久综合| 日本爱爱爱视频| 国产在线不卡一区| 人妻少妇精品无码专区二区 | 精品夜色国产国偷在线| 人人妻人人爽人人澡人人精品| 国产精品免费人成网站| 国产精品熟女一区二区不卡| 99re国产精品| 神马影院午夜我不卡| 欧美.com| 日本老师69xxx| 国产在线二区| 日韩av在线资源| 91午夜交换视频| 亚洲一区二区欧美激情| 中文字幕一区二区人妻在线不卡| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美一区二区三区综合| 伊人久久大香线蕉无限次| 成人福利网站在线观看| 华人av在线| 久久这里有精品| 猫咪在线永久网站| 日韩视频免费观看高清完整版| 国产成人在线视频观看| 一区二区中文字幕在线| 欧美日韩国产高清视频| 国产精品久久久久久免费免熟| 亚洲精品高清在线观看| 极品粉嫩小仙女高潮喷水久久| 美国一区二区三区在线播放 | 欧美视频导航| 日韩欧美第二区在线观看| 激情久久免费视频| 国产成人精品免费久久久久 | 亚洲影视资源网| 久久久123| 一区二区三区回区在观看免费视频| 中文字幕亚洲在线| 91插插插插插插| 粉嫩一区二区三区在线看| 久久手机在线视频| 日韩欧美视频| 日本精品一区二区三区高清 久久| 精品国产亚洲一区二区三区在线 | 青青草原国产免费| 国产探花一区二区| 精品无人区一区二区三区| 久久在线观看| 成人看片人aa| 久久久精品一区二区毛片免费看| 青青青国产精品一区二区| 免费看电影在线| 欧美成人小视频| 欧美三级理伦电影| 在线精品高清中文字幕| 青草久久伊人| 91久久精品一区二区别| 成人视屏在线观看| 97久久久免费福利网址| 中文在线免费| 久久九九亚洲综合| 91露出在线| 国产亚洲在线播放| 国模精品一区二区| 精品亚洲一区二区三区在线播放| 少妇高潮一区二区三区69| 欧美成人免费网站| 精品国产乱码一区二区三| 欧美久久婷婷综合色| 中文字幕人妻一区二区在线视频| 久久久久综合网| 国产又大又长又粗又黄| jizzjizz欧美69巨大| 欧美一二三区| 国产成人手机高清在线观看网站| 亚洲美女综合网| 日韩综合一区二区| 免费毛片小视频| 国产精品毛片| 午夜激情影院在线观看| 亚洲黄色一区| 青青青在线视频播放| 欧美视频二区| 日韩中文字幕在线免费| 亚洲精品影视| 国产免费一区二区三区视频| 国产一级久久| 久草综合在线观看| 老司机午夜精品99久久| 欧美性受xxxxxx黑人xyx性爽| 黑人巨大精品欧美黑白配亚洲| 国产精品自在自线| 粉嫩一区二区三区性色av| 亚洲男人在线天堂| 久久久国产一区二区三区四区小说| 要久久爱电视剧全集完整观看| 欧美成人激情视频| 亚洲性图自拍| 欧美国产日韩在线| 日韩深夜视频| 国产成人精品亚洲精品| 成人国产一区| 91入口在线观看| 欧美性生活一级片| 日韩欧美精品一区二区| 97精品国产| 欧美另类videosbestsex日本| 亚洲成人原创| 日本a√在线观看| 国产一区二区三区免费播放| 少妇极品熟妇人妻无码| xf在线a精品一区二区视频网站| 成熟人妻av无码专区| 精品小视频在线观看| 国产午夜精品久久久久久免费视| 精品人妻中文无码av在线| 国产精品美女久久久久aⅴ国产馆| 久久久久久久久久网站| 欧美日韩国产一中文字不卡| 中文在线a天堂| 精品av综合导航| 99免在线观看免费视频高清| 久操成人在线视频| 在线日韩影院| 96国产粉嫩美女| 日本午夜精品| 蜜桃视频成人在线观看| 亚洲一区二区伦理| 国产人妻精品久久久久野外| va亚洲va日韩不卡在线观看| 国产又黄又粗又猛又爽的| 午夜伊人狠狠久久| 国产口爆吞精一区二区| 日韩福利在线播放| 中文字幕中文字幕在线中高清免费版 | 国产午夜伦鲁鲁| 国产精品99久久久久久久vr | 国产一区二区观看| 日本人体一区二区| 久久狠狠亚洲综合| 法国伦理少妇愉情| 亚洲自拍偷拍综合| 一区二区三区黄| 国产亚洲视频在线观看| 性欧美18xxxhd| 成人免费在线看片| 香港欧美日韩三级黄色一级电影网站| 国产免费成人在线| 99热99精品| 国产99久久久国产精品免费看| 韩国中文字幕av| 成人av网址在线观看| 黄色录像免费观看| 欧美优质美女网站| 日本又骚又刺激的视频在线观看| 欧美激情三级免费| 成人免费黄色网| 久草成人在线| 国产黄色片免费在线观看| 国产精品一区免费在线观看| 国产精品理论在线| 在线精品视频一区二区三四| 五月婷婷激情在线| 午夜精品福利视频| 国产精品videossex| 精品免费久久久久久久| 国产一区二区免费视频| 国产一区第一页| 欧美日韩国产一级片| 成人高潮成人免费观看| 国产精品久久久久久久久久久新郎 | 3d玉蒲团在线观看| 91最新在线免费观看| 久久精品久久久| 日本一二三四区视频| 亚洲视频一二三| 99精品视频在线播放免费| 美女国内精品自产拍在线播放| 国产精选久久| 欧美性猛交内射兽交老熟妇| 国产电影精品久久禁18| 久草视频在线资源站| 精品国产一区二区三区久久久蜜月| 日本中文字幕中出在线| 国产亚洲欧美一区二区三区| 国产日韩高清一区二区三区在线| 久久偷拍免费视频| 色国产综合视频| 91社区在线观看播放| 91在线视频成人| 精品二区久久| 日韩精品卡通动漫网站| 欧洲精品视频在线观看| 麻豆影院在线观看| 成人h视频在线观看| 中文日韩欧美| 欧美黄色一级生活片| 欧美日韩高清不卡| 国产一线二线在线观看| 久久一区二区三区欧美亚洲| 日韩国产精品久久久| 一级性生活免费视频| 欧美mv和日韩mv的网站| 中文字幕资源网在线观看免费| 午夜午夜精品一区二区三区文| 国产自产v一区二区三区c| 日本天堂在线视频| 国产亚洲精品日韩| 亚洲亚洲一区二区三区| 日本一本二本在线观看| 中文字幕在线视频一区| 囯产精品久久久久久| 国产福利精品在线| 欧美精品啪啪| 波多野结衣av在线观看| 日韩午夜中文字幕| 欧美二三四区| 日本免费黄色小视频| 久久先锋影音av| av免费观看网址| 欧美资源在线观看| 欧美人与禽猛交乱配视频| 一起草在线视频| 67194成人在线观看| 日本在线影院| 精品一区二区三区毛片| 国产三级精品在线| 黄色一级a毛片| 成人免费福利在线| 日产欧产美韩系列久久99|