亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > HTML > 正文

詳解Canvas 實現(xiàn)炫麗的粒子運動效果(粒子生成文字)

2024-08-26 00:20:24
字體:
供稿:網(wǎng)友

沒有最好,只有更好,如題所示,這篇文章只要是分享一個用 Canvas 來實現(xiàn)的粒子運動效果。感覺有點標題黨了,但換個角度,勉勉強強算是炫麗吧,雖然色彩上與炫麗無關(guān),但運動效果上還是算得上有點點炫的。不管怎么樣,我們還是開始這個所謂的炫麗效果吧!

直接上代碼 ,不懂可以看代碼注釋。估計就會看明白大概的思路了。

html 代碼

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Canvas 實現(xiàn)炫麗的粒子運動效果-云庫前端</title><style>* {    margin: 0;    padding: 0;}html,body {    width: 100%;    height: 100%;}canvas {    display: block;    background: #000;}body::-webkit-scrollbar{    display: none;}.operator-box{    position: fixed;    top: 0;    left: 50%;    border: 1px solid #fff;    background: rgba(255,255,255,0.5);    padding: 20px 10px;    -webkit-transform: translateX(-50%);    transform: translateX(-50%);}.back-type,.back-animate{    margin-right: 20px;}.flex-box{    display: flex;    justify-content: center;    align-items: center;}#input-text{    line-height: 35px;    width: 260px;    height: 35px;    background: rgba(0, 0, 0,0.7);    color: #fff;    font-size: 16px;    border: none;    outline: none;    text-indent: 12px;    box-shadow: inset 0 0 12px 1px rgba(0,0,0,0.7);}#input-text::placeholder{    color: #ccc;    line-height: 55px;    height: 55px;}select{    -webkit-appearance: none;    -moz-appearance: none;    appearance: none;    border: none;    padding: 0px 20px 0px 6px;    height: 35px;    color: #fff;    text-align: left;    background: rgba(0, 0, 0,0.7) url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAICAYAAAAx8TU7AAAAOUlEQ…R4gPgWEIMAiOYBCS4C8ZDAIrBq4gigNkztQEFMi6AuQHESAPMeXiEMiWfpAAAAAElFTkSuQmCC) no-repeat 190px 12px;    background-size: 5px 8px;    box-shadow: inset 0 0 12px 1px rgba(0,0,0,0.7);}</style></head><body><div class="operator-box"><div class="flex-box">    <div class="back-type">散開類型:        <select name="" id="selectType">            <option value="back">歸位</option>            <option value="auto">隨機</option>        </select>    </div>    <div class="back-animate">散開效果(對歸位有效):       <select class="back-dynamics" id="selectDynamics">           <option value="spring">dynamics.spring</option>           <option value="bounce">dynamics.bounce</option>           <option value="forceWithGravity">dynamics.forceWithGravity</option>           <option value="gravity">dynamics.gravity</option>           <option value="easeInOut">dynamics.easeInOut</option>           <option value="easeIn">dynamics.easeIn</option>           <option value="easeOut">dynamics.easeOut</option>           <option value="linear">dynamics.linear</option>       </select>    </div>    <div class="input-box"><input type="text" placeholder="輸入漢字后回車" id="input-text"></div></div></div><script src="dynamics.min.js"></script><script src="index.js"></script><script>var iCircle = new Circle();</script></body></html>

HTML 代碼不多,只要是幾個操作元素。這里一看就明白。不費過多口舌。我們來看看本文的主角 JavaScript 代碼,不過,在看代碼前,我們不妨先聽聽實現(xiàn)這個效果的思路:

  1. 首先,我們得先生成一堆群眾演員(粒子);
  2. 把每個粒子的相關(guān)參數(shù)掛到自身的一些屬性上,因為第個粒子都會有自己的運動軌跡;
  3. 接著得讓它們各自運動起來。運動有兩種(自由運動和生成文字的運動);

JavaScript 代碼中使用了三個 Canvas 畫布,this.iCanvas(主場)、this.iCanvasCalculate(用來計算文字寬度)、this.iCanvasPixel(用于畫出文字,并從中得到文字對應的像素點的位置坐標)。

this.iCanvasCalculate 和 this.iCanvasPixel 這兩個無需在頁面中顯示出來,只是輔助作用。

下面就獻上棒棒的 JS 實現(xiàn)代碼

function Circle() {    var This = this;    this.init();    this.generalRandomParam();    this.drawCircles();    this.ballAnimate();    this.getUserText();    // 窗口改變大小后,生計算并獲取畫面    window.onresize = function(){        This.stateW = document.body.offsetWidth;        This.stateH = document.body.offsetHeight;        This.iCanvasW = This.iCanvas.width = This.stateW;        This.iCanvasH = This.iCanvas.height = This.stateH;        This.ctx = This.iCanvas.getContext("2d");    }}// 初始化Circle.prototype.init = function(){    //父元素寬高    this.stateW = document.body.offsetWidth;    this.stateH = document.body.offsetHeight;    this.iCanvas = document.createElement("canvas");    // 設(shè)置Canvas 與父元素同寬高    this.iCanvasW = this.iCanvas.width = this.stateW;    this.iCanvasH = this.iCanvas.height = this.stateH;    // 獲取 2d 繪畫環(huán)境    this.ctx = this.iCanvas.getContext("2d");    // 插入到 body 元素中    document.body.appendChild(this.iCanvas);    this.iCanvasCalculate = document.createElement("canvas");    // 用于保存計算文字寬度的畫布    this.mCtx =  this.iCanvasCalculate.getContext("2d");    this.mCtx.font = "128px 微軟雅黑";    this.iCanvasPixel = document.createElement("canvas");    this.iCanvasPixel.setAttribute("style","position:absolute;top:0;left:0;");    this.pCtx = null; // 用于繪畫文字的畫布    // 隨機生成圓的數(shù)量    this.ballNumber = ramdomNumber(1000, 2000);    // 保存所有小球的數(shù)組    this.balls = [];    // 保存動畫中最后一個停止運動的小球    this.animte = null;    this.imageData = null;    this.textWidth = 0; // 保存生成文字的寬度    this.textHeight = 150; // 保存生成文字的高度    this.inputText = ""; // 保存用戶輸入的內(nèi)容    this.actionCount = 0;    this.ballActor = []; // 保存生成文字的粒子    this.actorNumber = 0; // 保存生成文字的粒子數(shù)量    this.backType = "back"; // 歸位    this.backDynamics = ""; // 動畫效果    this.isPlay = false; // 標識(在生成文字過程中,不能再生成)}// 渲染出所有圓Circle.prototype.drawCircles = function () {    for(var i=0;i<this.ballNumber;i++){        this.renderBall(this.balls[0]);    }}// 獲取用戶輸入文字Circle.prototype.getUserText = function(){    This = this; // 保存 this 指向    ipu = document.getElementById("input-text");    ipu.addEventListener("keydown",function(event){        if(event.which === 13){ // 如果是回車鍵            ipu.value = ipu.value.trim(); // 去頭尾空格            var pat = /[/u4e00-/u9fa5]/; // 中文判斷            var isChinese = pat.test(ipu.value);            if(ipu.value.length !=0 && isChinese){                This.inputText = ipu.value;            }else{                alert("請輸入漢字");                return;            }            if(This.isPlay){                return            }            This.getAnimateType();            This.getTextPixel();            This.isPlay = true;        }    });}// 計算文字的寬Circle.prototype.calculateTextWidth = function () {    this.textWidth = this.mCtx.measureText(this.inputText).width;}// 獲取文字像素點Circle.prototype.getTextPixel = function () {    if(this.pCtx){        this.pCtx.clearRect(0,0,this.textWidth,this.textHeight);    }    this.calculateTextWidth(this.inputText);    this.iCanvasPixel.width = this.textWidth;    this.iCanvasPixel.height = this.textHeight;    this.pCtx =  this.iCanvasPixel.getContext("2d");    this.pCtx.font = "128px 微軟雅黑";    this.pCtx.fillStyle = "#FF0000";    this.pCtx.textBaseline = "botom";    this.pCtx.fillText(this.inputText,0,110);    this.imageData = this.pCtx.getImageData(0,0,this.textWidth,this.textHeight).data;    this.getTextPixelPosition(this.textWidth,this.textHeight);}// 獲取文字粒子像素點位置Circle.prototype.getTextPixelPosition = function (width,height) {    var left = (this.iCanvasW - width)/2;    var top = (this.iCanvasH - height)/2;    var space = 4;    this.actionCount = 0;    for(var i=0;i<this.textHeight;i+=space){        for(var j=0;j<this.textWidth;j+=space){            var index = j*space+i*this.textWidth*4;            if(this.imageData[index] == 255){                if(this.actionCount<this.ballNumber){                    this.balls[this.actionCount].status = 1;                    this.balls[this.actionCount].targetX = left+j;                    this.balls[this.actionCount].targetY = top+i;                    this.balls[this.actionCount].backX = this.balls[this.actionCount].x;                    this.balls[this.actionCount].backY = this.balls[this.actionCount].y;                    this.ballActor.push(this.balls[this.actionCount]);                    this.actionCount++;                }            }        }        this.actorNumber = this.ballActor.length;    }    this.animateToText();}// 粒子運動到指定位置Circle.prototype.animateToText = function(){    for(var i=0;i<This.actorNumber;i++){        dynamics.animate(This.ballActor[i], {          x: this.ballActor[i].targetX,          y: this.ballActor[i].targetY        },{            type: dynamics.easeIn,            duration: 1024,        });    }    setTimeout(function(){        This.ballbackType();    },3000);}// 粒子原路返回Circle.prototype.ballBackPosition = function(){    for(var i=0;i<This.actorNumber;i++){        var ball = This.ballActor[i];        dynamics.animate(ball, {          x: ball.backX,          y: ball.backY        },{            type: dynamics[this.backDynamics],            duration: 991,            complete:this.changeStatus(ball)        });    }}// 獲取類型|動畫效果Circle.prototype.getAnimateType = function() {    var selectType = document.getElementById("selectType");    var selectDynamics = document.getElementById("selectDynamics");    this.backType = selectType.options[selectType.options.selectedIndex].value;    this.backDynamics = selectDynamics.options[selectDynamics.options.selectedIndex].value;}// 復位散開Circle.prototype.ballbackType = function(){    if(this.backType == "back"){        this.ballBackPosition();    }else{        this.ballAutoPosition();    }    this.ballActor = [];}// 隨機散開Circle.prototype.ballAutoPosition = function(ball){    for(var i=0;i<this.actorNumber;i++){        this.changeStatus(this.ballActor[i])    }}// 更改小球狀態(tài)Circle.prototype.changeStatus = function(ball){    ball.status = 0;    if(this.isPlay == true){        this.isPlay = false;    }}// 隨機生成每個圓的相關(guān)參數(shù)Circle.prototype.generalRandomParam = function(){    for(var i=0;i<this.ballNumber;i++){        var ball = {};        ball.size = 1; // 隨機生成圓半徑        // 隨機生成圓心 x 坐標        ball.x = ramdomNumber(0+ball.size, this.iCanvasW-ball.size);        ball.y = ramdomNumber(0+ball.size, this.iCanvasH-ball.size);        ball.speedX = ramdomNumber(-1, 1);        ball.speedY = ramdomNumber(-1, 1);        this.balls.push(ball);        ball.status = 0;        ball.targetX = 0;        ball.targetY = 0;        ball.backX = 0;        ball.backY = 0;    }}// 改變圓的位置Circle.prototype.changeposition = function(){    for(var i=0;i<this.ballNumber;i++){        if( this.balls[i].status == 0){            this.balls[i].x += this.balls[i].speedX;            this.balls[i].y += this.balls[i].speedY;        }    }}// 畫圓Circle.prototype.renderBall = function(ball){    this.ctx.fillStyle = "#fff";    this.ctx.beginPath(); // 這個一定要加    this.ctx.arc(ball.x, ball.y, ball.size, 0, 2 * Math.PI);    this.ctx.closePath(); // 這個一定要加    this.ctx.fill();}// 小球碰撞判斷Circle.prototype.collision = function(ball){    for(var i=0;i<this.ballNumber;i++){       if(ball.x>this.iCanvasW-ball.size || ball.x<ball.size){            if(ball.x>this.iCanvasW-ball.size){                ball.x = this.iCanvasW-ball.size;            }else{                ball.x = ball.size;            }            ball.speedX = - ball.speedX;       }       if(ball.y>this.iCanvasH-ball.size || ball.y<ball.size){            if(ball.y>this.iCanvasH-ball.size){                ball.y = this.iCanvasH-ball.size;            }else{                ball.y = ball.size;            }            ball.speedY = - ball.speedY;       }    }}// 開始動畫Circle.prototype.ballAnimate = function(){    var This = this;    var animateFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;    (function move(){        animte = animateFrame(move);        This.ctx.clearRect(0, 0, This.iCanvasW, This.iCanvasH);        This.changeposition();        for(var i=0;i<This.ballNumber;i++){           This.collision(This.balls[i]);           This.renderBall(This.balls[i]);        }    })();}// 生成一個隨機數(shù)function ramdomNumber(min, max) {    return Math.random() * (max - min) + min;}

看了代碼估計也只是心里炫了一下,也沒有讓你想把這個東西做出來的欲望,為此我知道必需得讓你眼睛心服口服才行。在線 DEMO: 動感的粒子示例。

人無完人,代碼也一樣??雌饋磉\行順暢的代碼也或多或少有一些瑕疵,日前這個效果還只支持中文。英文的話,我得再努力一把,不管怎么樣,英文后面肯定是會加入來的,只是時間問題了。還有代碼中用于標記是否可再次執(zhí)行生成文字的 屬性:this.isPlay ,還是一點瑕疵,this.isPlay 的狀態(tài)更改沒有準確的在粒子歸位的那一瞬間更改,而是提前更改了狀態(tài)。但這個狀態(tài)不會影響本例子效果的完整實現(xiàn)。

這個例子中用到了 dynamics.js 庫,主要是用到它里面的一些運動函數(shù),讓粒子動起來更感人一些,僅此而已。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網(wǎng)。

 

注:相關(guān)教程知識閱讀請移步到HTML教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
人妻丰满熟妇av无码久久洗澡| 西野翔中文久久精品字幕| 成年人晚上看的视频| 91在线精品观看| 亚洲成人av影片| 中文字幕亚洲二区| 亚洲欧美aⅴ...| 亚洲成人在线网| 在线看不卡av| 美女诱惑黄网站一区| 涩涩视频免费看| 天天影院图片亚洲| 青青草在线免费视频| www.日韩av.com| 妺妺窝人体色www在线观看| 亚洲影院高清在线| 91p九色成人| 天堂电影在线| 99精品福利视频| 日韩专区第一页| 九九热在线精品视频| 国产精品电影网站| 久久精品中文字幕免费mv| 亚洲在线观看网站| 天天天天天天操| 91不卡在线观看| 青青青国产在线| 三级精品视频| 在线视频欧美一区| 精品久久久99| 翔田千里88av中文字幕| 亚洲欧美一区二区三区在线观看| 婷婷夜色潮精品综合在线| 97在线免费| 一级一片免费播放| 免费日韩在线观看| 性无码专区无码| 一个人在线观看免费视频www| 亚洲乱码精品久久久久..| 欧美艳星kaydenkross| 欧美另类极限扩张| 久久蜜桃av一区二区天堂| 免费国产a级片| 很污很黄的网站| 亚洲欧洲精品天堂一级| 亚洲久久久久| 国产第一页在线播放| 影视一区二区三区| 国产激情视频在线播放| 午夜亚洲激情| 一本大道久久精品懂色aⅴ| 精品成人无码久久久久久| 国产片高清在线观看| 日韩小视频在线播放| 成人黄色小视频在线观看| 成人精品一区二区三区免费| 亚洲黄色录像| 久久久国产精品一区二区中文| 中文字幕av一区| 亚洲精品午夜视频| 日韩在线观看免费| 亚洲最大在线视频| 成人午夜视频在线| 青青草原在线亚洲| 一级特黄特色的免费大片| 久久久久人妻一区精品色欧美| 久久久久久久久久久免费视频| www.黄色国产| 99久久综合国产精品二区| 日韩a级片在线观看| 群体交乱之放荡娇妻一区二区| 欧美国产视频一区二区| 日韩精品视频中文字幕| 久久99精品久久久久久噜噜| 亚洲一二av| 亚洲人人精品| 国产又粗又长又黄的视频| 粉嫩av一区二区三区天美传媒| 成人久久久久久久久| 亚洲综合视频网站| 日本欧美加勒比视频| 国产一级视频| 高清亚洲成在人网站天堂| av免费在线观看网址| 欧美7777| 亚洲国产日韩一区无码精品久久久| 久久久精品国产一区二区| 激情内射人妻1区2区3区| 亚洲男女自偷自拍| 欧美草草影院在线视频| 亚洲五码在线| 91丝袜一区二区三区| 波多野结衣在线观看| 91亚洲一线产区二线产区| 最新国产成人在线观看| 亚洲波多野结衣| 欧美一区二区三区视频免费播放| 国产主播一区二区三区四区| 日韩一区二区三区免费视频| 欧美视频二区36p| 国产在线精品一区二区三区》| 国产日产欧美一区| 午夜激情综合网| 国产天堂素人系列在线视频| av在线之家电影网站| 亚洲精品欧美一区二区三区| 亚洲国产精品久久久天堂| 性欧美videos另类喷潮| 日韩pacopacomama| 三年中文在线观看免费大全中国| 色视频www在线播放国产成人| 成品人视频ww入口| 成人免费视频a| 男人操女人免费网站| 免费无遮挡无码永久在线观看视频| 97超碰在线公开在线看免费| 欧美最猛性xxxx高清| 国产美女在线观看一区| 日本一卡2卡三卡4卡网站| 欧美日韩影视| 日韩欧美国产电影| 四虎国产精品永久免费观看视频| 欧美调教视频| 成人国产1314www色视频| 中文字幕在线影院| 亚洲人成网站在线| 免费看av在线| 欧美性xxxx极品hd欧美风情| 欧美主播一区二区三区| 黄色无遮挡网站| 日韩女优av电影| 99精品免费网| 99久久国产视频| 亚洲国产综合人成综合网站| 青青青青草视频| 亚洲成aⅴ人片久久青草影院| 久久久久国产精品麻豆ai换脸| 欧美五级在线观看视频播放| 日韩亚洲一区中文字幕| 伊大人久久香线焦宗合一75大| jlzzjlzz亚洲日本少妇| 中文字幕一区二区三区在线不卡| 精品日韩久久久| 日韩电影大全免费观看2023年上| 国产精欧美一区二区三区白种人| 国产精品999视频| 国产精品久久一| 一区二区三区视频免费在线观看| 口述被爽到呻吟高潮自述| 日韩欧美2区| 亚洲午夜黄色| 天堂成人在线视频| 国产情侣小视频| 91在线观看免费视频| 激情久久一区二区| 久久91精品国产91久久跳| 先锋欧美三级| 秋霞综合在线视频| 秘密影院久久综合亚洲综合| 国产精品青青草| 强行糟蹋人妻hd中文| 人成免费电影一二三区在线观看| 成人午夜精品无码区| 日韩国产一区二| 污视频网站免费| 红杏成人性视频免费看| 亚洲人午夜精品免费| 蜜桃视频涩涩| 欧美裸体男粗大视频在线观看| 成人午夜高潮视频| 精品在线手机视频| 亚洲最新永久观看在线| 老司机福利在线观看| 久久婷婷麻豆| 日韩视频在线观看免费视频| 国产精品久久久免费观看| 欧美绝顶高潮抽搐喷水合集| 免费一级欧美片在线观看网站| av电影在线播放高清免费观看| 人人妻人人爽人人澡人人精品| www国产亚洲精品| 最近更新的2019中文字幕| 宅男视频免费在线观看视频| 亚洲麻豆一区二区三区| 四虎影视精品| 中文字幕在线视频网站| 国产精品特级毛片一区二区三区| 91香蕉在线| 欧美专区一二三| 国产精品v日韩精品v在线观看| 欧美日韩中文视频| 久久久久久久久99精品大| 亚洲精品中文在线| 亚洲精品电影在线| 精品国产91久久久久久| 国产福利视频一区| 人妻熟女一二三区夜夜爱| 欧美猛男同性videos| 伊人久久大香线蕉综合影院首页| 中文字幕制服丝袜一区二区三区| 欧美日韩视频在线观看一区二区三区| 国产chinasex对白videos麻豆| 国产极品久久久久久久久波多结野| 欧美韩国日本不卡| 亚洲精品乱码久久久久久| 青娱乐在线视频观看| 1024国产精品| 日本国产在线观看| 精品国产一区二区三区久久久樱花| 国产精品自拍偷拍视频| 激情综合五月婷婷| 国产亚洲欧美在线视频| 无码一区二区三区| 91精品欧美福利在线观看| 香蒸焦蕉伊在线| 男人天堂久久| 欧美色欧美亚洲另类七区| 国产尤物视频| 国产亚洲成年网址在线观看| 另类色图亚洲色图| 中文字幕av不卡在线| 中文字幕免费播放| 一本久道久久综合中文字幕| a在线视频观看| 羞羞答答成人影院www| 精品国产乱码久久久久久果冻传媒| 久草在线资源视频| 欧美片网站免费| 性欧美13一14内谢| 国模私拍国内精品国内av| 国产精品久久久久久亚洲色| 91成人在线视频| 美腿丝袜亚洲一区| 欧美高清视频在线| 九一国产精品视频| 欧美videosex性欧美黑吊| 日本高清视频在线观看| 美女网站视频黄色| 成人白浆超碰人人人人| 亚洲欧洲日产国码av系列天堂| 国产精品久久久久久久乖乖| 日韩在线不卡av| 久色婷婷小香蕉久久| 无码日韩精品一区二区| 成人免费视频视频在线观看免费| 亚洲特级黄色片| 亚洲一线二线三线久久久| 性折磨bdsm欧美激情另类| jk漫画禁漫成人入口| 91精品人妻一区二区三区蜜桃欧美| 亚洲va欧美va国产va天堂影院| 国产91美女视频| 搜索黄色一级片| 向日葵视频成人app网址| aa免费在线观看| 国产成人激情av| 亚洲欧美日韩国产综合| 日韩美女毛片| 亚洲色图另类小说| 中文字幕乱码在线观看| 中文字幕在线不卡一区二区三区| 大杳蕉精品视频在线观看| 青青操免费在线视频| 成人自拍视频网| 国产精品我不卡| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲欧美制服综合另类| 国产精品aaa| 国产中文第一页| 黄色亚洲在线| 亚洲精品高清视频在线观看| 色88888久久久久久影院按摩| 黄色a级片在线观看| 涩爱av色老久久精品偷偷鲁| 久久成人av| 中文字幕一区二区三区日韩精品| 亚洲欧美精品中文第三| 免费观看在线一区二区三区| 亚洲国产精品资源| 欧美国产日韩电影| 成人毛片免费在线观看| 亚洲大胆视频| 日韩欧美国产激情| 国产传媒国产传媒| 亚洲高清资源综合久久精品| 久久综合五月婷婷| av大全在线观看| 国产在线xxx| 亚洲精品一二三**| 欧美最顶级的aⅴ艳星| 国产综合中文字幕| 天天亚洲美女在线视频| 91专区视频| 国产精品久久一区| 久久久成人精品一区二区三区| 四季av综合网站| 亚洲精品视频在线观看免费视频| 亚洲自拍一区在线观看| 69久成人做爰电影| 亚洲第一毛片| 日本一卡二卡四卡精品| 欧洲精品久久一区二区| 亚洲女人被黑人巨大进入al| 中文字幕一区二区久久人妻网站| 久久伊人精品| 国产精品亚洲天堂| 国产又粗又猛又爽又黄av| 扒开伸进免费视频| 中文字幕+乱码+中文字幕一区| 色诱亚洲精品久久久久久| gogo人体一区| 一区二区三区高清在线观看| 中文字幕欧美日本乱码一线二线| 国产一区二区中文字幕免费看| 久久综合电影| 精品国产鲁一鲁一区二区张丽| 黄色一级片免费播放| 91制片在线观看| 成人网ww555视频免费看| 亚洲免费黄色网址| 97精品国产99久久久久久免费| 成人视屏免费看| 亚洲夜晚福利在线观看| 亚洲bbw性色大片| 亚洲国产精品嫩草影院| 国产日韩精品中文字无码| 日本亲与子乱a| 草莓视频一区|