日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 編程 > HTML > 正文

基于HTML5 WebGL的3D機房的示例

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

前言

用 WebGL 渲染的 3D 機房現(xiàn)在也不是什么新鮮事兒了,這篇文章的主要目的是說明一下,3D 機房中的 eye 和 center 的問題,剛好在項目中用上了,好生思考了一番,最終覺得這個例子最符合我的要求,就拿來作為記錄。

效果圖

html5,3d機房,WebGL

這個 3D 機房的 Demo 做的還不錯,比較美觀,基礎(chǔ)的交互也都滿足,接下來看看怎么實現(xiàn)。

代碼生成

定義類

首先從 index.html 中調(diào)用的 js 路徑順序一個一個打開對應(yīng)的 js,server.js 中自定義了一個 Editor.Server 類由 HT 封裝的 ht.Default.def 函數(shù)創(chuàng)建的(注意,創(chuàng)建的類名 Editor.Server 前面的 Editor 不能用 E 來替代):

ht.Default.def('Editor.Server', Object, {//第一個參數(shù)為類名,如果為字符串,自動注冊到HT的classMap中;第二個參數(shù)為此類要繼承的父類;第三個參數(shù)為方法和變量的聲明    addToDataModel: function(dm) { //將節(jié)點添加進數(shù)據(jù)容器        dm.add(this._node);// ht 中的預(yù)定義函數(shù),將節(jié)點通過 add 方法添加進數(shù)據(jù)容器中    },    setHost: function() { //設(shè)置吸附        this._node.setHost.apply(this._node, arguments);     },    s3: function() {//設(shè)置節(jié)點的大小        this._node.s3.apply(this._node, arguments);    },    setElevation: function() {//控制Node圖元中心位置所在3D坐標系的y軸位置        this._node.setElevation.apply(this._node, arguments);    }});

創(chuàng)建 Editor.Server 類

html5,3d機房,WebGL

這個類可以創(chuàng)建一個 ht.Node 節(jié)點,并設(shè)置節(jié)點的顏色和前面貼圖:

var S = E.Server = function(obj) {//服務(wù)器組件    var color = obj.color,         frontImg = obj.frontImg;    var node = this._node = new ht.Node();//創(chuàng)建節(jié)點    node.s({//設(shè)置節(jié)點的樣式 s 為 setStyle 的縮寫        'all.color': color,//設(shè)置節(jié)點六面的顏色        'front.image': frontImg //設(shè)置節(jié)點正面的圖片    });};

這樣我在需要創(chuàng)建服務(wù)器組件的位置直接 new 一個新的服務(wù)器組件對象即可,并且能夠直接調(diào)用我們上面聲明的 setHost 等函數(shù),很快我們就會用上。

接下來創(chuàng)建 Editor.Cabinet 機柜類 ,方法跟上面 Editor.Server 類的定義方法差不多:

ht.Default.def('Editor.Cabinet', Object, {    addToDataModel: function(dm) {        dm.add(this._door);        dm.add(this._node);        this._serverList.forEach(function(s) {             s.addToDataModel(dm);         });    },    p3: function() {         this._node.p3.apply(this._node, arguments);//設(shè)置節(jié)點的 3d 坐標    }});

創(chuàng)建 Editor.Cabinet 類

html5,3d機房,WebGL

這個類相對于前面的 Editor.Server 服務(wù)器組件類要相對復(fù)雜一點,這個類中創(chuàng)建了一個柜身、柜門以及機柜內(nèi)部的服務(wù)器組件:

var C = E.Cabinet = function(obj) {    var color = obj.color,        doorFrontImg = obj.doorFrontImg,        doorBackImg = obj.doorBackImg,        s3 = obj.s3;    var node = this._node = new ht.Node(); // 柜身    node.s3(s3);//設(shè)置節(jié)點的大小 為 setSize3d    node.a('cabinet', this);//自定義 cabinet 屬性    node.s({//設(shè)置節(jié)點的樣式 為 setStyle        'all.color': color,//設(shè)置節(jié)點六面的顏色        'front.visible': false//設(shè)置節(jié)點前面是否可見    });    if (Math.random() > 0.5) {        node.addStyleIcon('alarm', {//向節(jié)點上添加 icon 圖標            names: ['icon 溫度計'],//包含多個字符串的數(shù)組,每個字符串對應(yīng)一張圖片或矢量(通過ht.Default.setImage注冊)            face: 'top',//默認值為front,圖標在3D下的朝向,可取值left|right|top|bottom|front|back|center            position: 17,//指定icons的位置            autorotate: 'y',//默認值為false,圖標在3D下是否自動朝向眼睛的方向            t3: [0, 16, 0],//默認值為undefined,圖標在3D下的偏移,格式為[x,y,z]            width: 37,//指定每個icon的寬度,默認根據(jù)注冊圖片時的寬度            height: 32,//指定每個icon的高度,默認根據(jù)注冊圖片時的高度            textureScale: 4,//默認值為2,該值代表內(nèi)存實際生成貼圖的倍數(shù),不宜設(shè)置過大否則影響性能            visible: { func: function() { return !!E.alarmVisible; }}//表示該組圖片是否顯示        });    }    var door = this._door = new ht.DoorWindow();//柜門    door.setWidth(s3[0]);//置圖元在3D拓撲中的x軸方向的長度    door.setHeight(1);//設(shè)置圖元在3D拓撲中的z軸長度    door.setTall(s3[1]);//控制Node圖元在y軸的長度    door.setElevation(0);//設(shè)置圖元中心在3D坐標系中的y坐標    door.setY(s3[2] * 0.5);//設(shè)置節(jié)點在 y 軸的位置    door.setHost(node);//設(shè)置吸附    door.s({//設(shè)置節(jié)點樣式 setStyle        'all.color': color,//設(shè)置節(jié)點六面顏色        'front.image': doorFrontImg,//設(shè)置節(jié)點正面圖片        'front.transparent': true,//設(shè)置節(jié)點正面是否透明        'back.image': doorBackImg,//設(shè)置節(jié)點背面的圖片        'back.uv': [1,0, 1,1, 0,1, 0,0],//自定義節(jié)點后面uv貼圖,為空采用默認值[0,0, 0,1, 1,1, 1,0]        'dw.axis': 'right'//設(shè)置DoorWindow圖元展開和關(guān)閉操作的旋轉(zhuǎn)軸,可取值left|right|top|bottom|v|h    });    var serverList = this._serverList = [];     var max = 6,        list = E.randomList(max, Math.floor(Math.random() * (max - 2)) + 2); //global.js 中聲明的獲取隨機數(shù)的函數(shù)     var server, h = s3[0] / 4;    list.forEach(function(r) {        var server = new E.Server({ //服務(wù)器組件            color: 'rgb(51,49,49)',            frontImg: '服務(wù)器 組件精細'        });        server.s3(s3[0] - 2, h, s3[2] - 4);//設(shè)置節(jié)點大小        server.setElevation((r - max * 0.5) * (h + 2));//設(shè)置節(jié)點中心點在 y 軸的坐標        server.setHost(node);//設(shè)置節(jié)點的吸附        serverList.push(server);//向 serverList 中添加 server 節(jié)點    });};

上面代碼中唯一沒提到的是 Editor.randomList 函數(shù),這個函數(shù)是在 global.js 文件中聲明的,聲明如下:

var E = window.Editor = {    leftWidth: 0,    topHeight: 40,    randomList: function(max, size) {        var list = [], ran;        while (list.length < size) {            ran = Math.floor(Math.random() * max);            if (list.indexOf(ran) >= 0)                 continue;            list.push(ran);        }        return list;    }};

好了,場景中的各個部分的類都創(chuàng)建完成,那我們就該將場景創(chuàng)建起來,然后將這些圖元都堆進去!

場景創(chuàng)建

如果熟悉的同學(xué)應(yīng)該知道,用 HT 創(chuàng)建一個 3D 場景只需要 new 一個 3D 組件,再將通過 addToDOM 函數(shù)將這個場景添加進 body 中即可:

var g3d = E.main = new ht.graph3d.Graph3dView(); //3d 場景

main.js 文件中主要做的是在 3D 場景中一些必要的元素,比如墻面,地板,門,空調(diào)以及所有的機柜的生成和排放位置,還有非常重要的交互部分。

墻體,地板,門,空調(diào)和機柜的創(chuàng)建我就不貼代碼出來了,有興趣的請自行查看代碼,這里主要說一下雙擊機柜以及與機柜有關(guān)的任何物體(柜門,服務(wù)器設(shè)備)則 3D 中 camera 的視線就會移動到雙擊的機柜的前方某個位置,而且這個移動是非常順滑的,之前技藝不精,導(dǎo)致這個部分想了很久,最后參考了這個 Demo 的實現(xiàn)方法。

為了能夠重復(fù)地設(shè)置 eye 和 center,將設(shè)置這兩個參數(shù)對應(yīng)的內(nèi)容封裝為 setEye 和 setCenter 方法,setCenter 方法與 setEye 方法類似,這里不重復(fù)贅述:

// 設(shè)置眼睛位置var setEye = function(eye, finish) {    if (!eye) return;    var e = g3d.getEye().slice(0),//獲取當(dāng)前 eye 的值        dx = eye[0] - e[0],        dy = eye[1] - e[1],        dz = eye[2] - e[2];    // 啟動 500 毫秒的動畫過度    ht.Default.startAnim({        duration: 500,        easing: easing,//動畫緩動函數(shù)        finishFunc: finish || function() {}, //動畫結(jié)束后調(diào)用的函數(shù)        action: function(v, t) {//設(shè)置動畫v代表通過easing(t)函數(shù)運算后的值,t代表當(dāng)前動畫進行的進度[0~1],一般屬性變化根據(jù)v參數(shù)進行            g3d.setEye([ //設(shè)置 3D 場景中的 eye 眼睛的值,為一個數(shù)組,分別對應(yīng) x,y,z 軸的值                 e[0] + dx * v,                e[1] + dy * v,                e[2] + dz * v            ]);        }    });};

我沒有重復(fù)聲明 setCenter 函數(shù)不代表這個函數(shù)不重要,恰恰相反,這個函數(shù)在“視線”移動的過程中起到了決定性的作用,上面的 setEye 函數(shù)相當(dāng)于我想走到我的目標位置的前面(至少我定義的時候是這種用途),而 sCenter 的定義則是將我的視線移到了目標的位置(比如我可以站在我現(xiàn)在的位置看我右后方的物體,也可以走到我右后方去,站在那個物體前面看它),這點非常重要,請大家好好品味一下。

雙擊事件倒是簡單,只要監(jiān)聽 HT 封裝好的事件,判斷事件類型,并作出相應(yīng)的動作即可:

g3d.mi(function(e) {//addInteractorListener 事件監(jiān)聽函數(shù)    if (e.kind !== 'doubleClickData')  //判斷事件類型為雙擊節(jié)點        return;    var data = e.data, p3;    if (data.a('cabinet')) //機身        p3 = data.p3();    else {        host = data.getHost(); //獲取點擊節(jié)點的吸附對象        if (host && host.a('cabinet')) {//如果吸附對象為 cabinet            p3 = host.p3();        }    }    if (!p3) return;    setCenter(p3); //設(shè)置 center 目標的要移向位置為 cabinet 的位置    setEye([p3[0], 211, p3[2] + 247]); //設(shè)置 eye 眼睛要移向的位置});

頂部導(dǎo)航欄

html5,3d機房,WebGL

一開始看到這個例子的時候我在想,這人好厲害,我用 HT 這么久,用 HT 的 ht.widget.Toolbar 還沒能做出這么漂亮的效果,看著看著發(fā)現(xiàn)這原來是用 form 表單做的,厲害厲害,我真是太愚鈍了。

var form = E.top = new ht.widget.FormPane(); //頂部 表單組件form.setRowHeight(E.topHeight);//設(shè)置行高form.setVGap(-E.topHeight);//設(shè)置表單組件水平間距 設(shè)置為行高的負值則可以使多行處于同一行form.setVPadding(0);//設(shè)置表單頂部和頂部與組件內(nèi)容的間距form.addRow([null, {//向表單中添加一行組件,第一個參數(shù)為元素數(shù)組,元素可為字符串、json格式描述的組件參數(shù)信息、html元素或者為null    image: {        icon: './symbols/inputBG.json',        stretch: 'centerUniform'    }}], [40, 260]);//第二個參數(shù)為每個元素寬度信息數(shù)組,寬度值大于1代表固定絕對值,小于等于1代表相對值,也可為80+0.3的組合form.addRow([null, null, {    id: 'searchInput',    textField: {}}, {    element: '機房可視化管理系統(tǒng)',    color: 'white',    font: '18px arial, sans-serif'}, null, {    button: {        // label: '視圖切換',        icon: './symbols/viewChange.json',        background: null,        selectBackground: 'rgb(128,128,128)',        borderColor: 'rgba(0, 0, 0, 0)',        onClicked: function() {            E.focusTo();        }    }}, null, {    button: {        // label: '告警',        icon: './symbols/alarm.json',        togglable: true,        selected: false,        background: null,        selectBackground: 'rgb(128,128,128)',        borderColor: 'rgba(0, 0, 0, 0)',        onClicked: function(e) {            E.setAlarmVisible(this.isSelected());        }    }}, null], [40, 42, 218, 300, 0.1, 50, 10, 50, 10]);

以上都只是能實現(xiàn),但是并沒有真正地添加進 html 標簽中,也就意味著,現(xiàn)在界面上什么都沒有!別忘了在頁面加載的時候?qū)?3D 場景添加進 body 中,同時也別忘了將 form 表單添加進 body 中,并且設(shè)置窗口大小變化事件時,form 表單也需要實時更新:

window.addEventListener('load', function() {    g3d.addToDOM(); //將 3D 場景添加進 body 中    document.body.appendChild(E.top.getView()); //將 form 表單組件底層 div 添加進 body 中    window.addEventListener('resize', function() {//窗口大小變化事件監(jiān)聽        E.top.iv();//更新 form 表單的底層 div     });});

這里說明一下 addToDOM 函數(shù),對于了解 HT 的機制非常重要。HT 的組件一般都會嵌入 BorderPane、SplitView 和 TabView 等容器中使用,而最外層的 HT 組件則需要用戶手工將 getView() 返回的底層 div 元素添加到頁面的 DOM 元素中,這里需要注意的是,當(dāng)父容器大小變化時,如果父容器是 BorderPane 和 SplitView 等這些 HT 預(yù)定義的容器組件,則 HT 的容器會自動遞歸調(diào)用孩子組件invalidate 函數(shù)通知更新。但如果父容器是原生的 html 元素, 則 HT 組件無法獲知需要更新,因此最外層的 HT 組件一般需要監(jiān)聽 window 的窗口大小變化事件,調(diào)用最外層組件 invalidate 函數(shù)進行更新。

為了最外層組件加載填充滿窗口的方便性,HT 的所有組件都有 addToDOM 函數(shù),其實現(xiàn)邏輯如下,其中 iv 是 invalidate 的簡寫:

addToDOM = function(){       var self = this,        view = self.getView(),           style = view.style;    document.body.appendChild(view); //將場景的底層 div 添加進 body 中               style.left = '0';//HT 默認將所有的組件底層div的position設(shè)置為absolute    style.right = '0';    style.top = '0';    style.bottom = '0';          window.addEventListener('resize', function () { self.iv(); }, false); //窗口大小變化監(jiān)聽事件,通知組件變化更新          }

這樣,所有的代碼就結(jié)束了,可以自己右鍵“檢查”,network 中可以獲取相對應(yīng)的 json 文件。

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


注:相關(guān)教程知識閱讀請移步到HTML教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
亚洲第一视频| 精品日本视频| 欧美日韩国产在线| 欧美在线日韩| 久久久久蜜桃| 蜜桃视频中文字幕| 日韩一级网站| a√免费观看在线网址www| 51精品免费网站| 欧美日韩综合高清一区二区 | 欧美一级欧美三级在线观看| 91欧美在线| 欧美国产91| 欧美三级中文字幕在线观看| 在线观看区一区二| 香蕉av一区| 日韩亚洲欧美中文在线| 欧美 日韩 综合| 亚洲一区在线观看视频| 91精品婷婷国产综合久久竹菊| 91精品在线免费| 国产99精品| 国产视频97| 在线三级av| 亚洲福利精品在线| 一区二区三区高清在线| 国产婷婷一区二区| 精品婷婷伊人一区三区三| 国产乱国产乱老熟300| 国产黄在线观看免费观看不卡| 欧美三级日韩三级| 日韩精品丝袜在线| 91亚洲欧美| 中文字幕欧美日韩| 亚洲一区在线观看视频| 欧美日韩视频免费播放| 日韩色在线观看| 国产精品视频福利一区二区| 午夜黄色小视频| 久久久久蜜桃| 国产香蕉精品视频| 精品国产乱码久久久久久蜜臀| 不卡视频一区二区三区| 日本亚洲视频在线| 精品成a人在线观看| 欧美国产一区视频在线观看| 国产91大片| xxxcom在线观看| 国产一区在线精品| 久久91精品国产91久久小草| 免费精品国产自产拍在| 日韩在线高清视频| 日韩精品视频在线免费观看| 91精品在线观| 精品国产免费视频| 欧美一级搡bbbb搡bbbb| 久久久91精品| 欧美日韩在线精品成人综合网 | 一区在线播放视频| 中文天堂资源在线| 久久99久久99精品中文字幕| 欧美日韩国产影片| 国产视频1区| 国产成人精品三级| www.尤物.com| 蜜桃久久av| 国产成人精品免费网站| 99pao成人国产永久免费视频| 欧美精选午夜久久久乱码6080| 欧美日韩视频网站| 国产1区在线| 日韩精品在线免费播放| 欧美日韩在线不卡| 91精品综合久久久久久 | 深夜日韩欧美| 欧美三级在线播放| 欧美国产三级| 青青国产91久久久久久| 91精品国产91久久久久久久久| 91精品电影| 在线黄色国产电影| 日韩视频免费直播| 蜜臀国产一区| 日韩字幕在线观看| 97久久精品午夜一区二区| 91av久久久| 中文字幕亚洲欧美| 日韩视频精品在线| 亚洲第一页中文字幕| 国产乱国产乱300精品| 99视频在线看| 伊人中文字幕在线观看| 69av亚洲| 久久欧美中文字幕| 亚洲三级av| 欧美日韩精品高清| 国产一区日韩欧美| aaa大片在线观看| www.精品视频| 国产一二三区精品视频| 欧美日韩高清一区二区不卡| 美女免费视频一区| 天天摸日日摸狠狠添| 国产一级视频| 日韩一二三四区| 中文字幕精品在线视频| 日韩欧美一二三区| 玖玖在线免费视频| 欧美三级日韩三级国产三级| 97久久精品| 最新中文字幕在线播放| 日韩在线视频二区| 不卡中文一二三区| 日韩精品视频在线观看免费| 欧美区高清在线| 久草中文在线观看| 精品国产欧美日韩| 欧美日韩在线精品成人综合网| 国产在线高清精品| 日韩在线三区| 欧美在线亚洲一区| 91精品国产综合久久香蕉的特点| 精品日韩视频在线观看| 伊人亚洲视频| 久久91精品国产91久久小草| 日韩在线视频一区| 精品久久电影| 欧美日韩国产综合网| 黄色一区二区视频| 日韩中文字幕在线视频观看| 亚洲大片精品永久免费| 欧美激情视频一区二区三区在线播放 | 国产福利第一页| 91精品xxx在线观看| 亚洲免费婷婷| 欧美婷婷精品激情| 成年人黄国产| 一区二区精品区| 中文字幕日韩高清| 亚洲专区一区| 樱花草www在线| 久久精品国产91精品亚洲| 欧美日韩一二三四| 91精品婷婷国产综合久久| 日韩欧美资源站| 中文字幕日韩欧美在线| 日本亚洲欧美天堂免费| 欧美一级日韩不卡播放免费| 国产免费久久| 亚洲 欧美综合在线网络| 日韩精品在线播放| 国产中文在线播放| 精品婷婷伊人一区三区三| 一本久久a久久精品亚洲| 中文字幕第一页在线播放| 在线观看中文字幕一区| 日韩欧美成人一区二区三区| 中文字幕日韩在线观看| 亚洲区中文字幕| 国产黄色一区| 黄污视频在线看| 日韩你懂的电影在线观看| 国产在线不卡av| 亚洲电影中文字幕在线观看| а√天堂8资源中文在线| 日韩中文字幕国产| 亚洲第一网中文字幕| 91精品国产免费久久综合| 欧美国产三级| 国产黄在线播放| 久久久综合精品| 欧美中文字幕在线观看视频| 欧美一级在线免费| 午夜私人影院在线观看| 一区二区三区高清在线| 国产在线观看a| 欧美日韩国产一区在线| 黄色片网站在线| 热久久精品国产| 国产黄色在线免费观看| 91精品国产自产在线| 欧美日韩在线视频一区| 国产色综合网| 欧美久久在线观看| 在线视频你懂得一区| 刘玥91精选国产在线观看| 国产免费播放一区二区| 久久电影国产免费久久电影| 欧美日韩精品中文字幕| 在线一区二区不卡| 伊人国产视频| 久久99蜜桃精品久久久久小说| 日韩精品视频在线看| 欧美日韩高清| 国产三级视频网站| 亚洲国内精品视频| av免费观看国产| 91久久精品午夜一区二区| 国产欧美日韩精品在线| 欧美国产一级片| 国产最新在线| 亚洲视频 中文字幕| 最近中文字幕在线中文视频| 国产一级在线播放| 精品人妻一区二区免费视频| 日韩午夜中文字幕| 亚洲一区在线观看视频| 国产香蕉精品视频| 日韩亚洲欧美中文三级| 亚洲免费中文字幕| 99pao成人国产永久免费视频| 欧美日韩精品综合在线 | 国产福利久久| 日韩精品视频在线观看免费| 国产95在线|亚洲| 中文字幕亚洲免费| 日韩欧美中文在线| 91精品国产乱码久久蜜臀| 91精品蜜臀在线一区尤物| 国产字幕在线看| 久久在线91| 91精品国产91综合久久蜜臀| 欧美日韩中文字幕日韩欧美| 久久久91精品国产| 国产成人精品网址| wwwwww在线观看| 精品国产网站在线观看| 最新中文字幕在线播放| 91精品国产色综合久久久蜜香臀| 久久精品99国产国产精| 91精品视频播放| 国产丝袜欧美中文另类| 亚洲欧洲国产视频| 国产婷婷一区二区| 日韩一二三四区| а√天堂8资源中文在线| 国产69精品久久久久孕妇国产69久久 | 日韩va亚洲va欧洲va国产| 日韩欧美看国产| www.av中文字幕| 日韩欧美中文在线视频| 91欧美日韩在线| 亚洲黄色一区二区| 日韩欧美国产高清| 欧美一卡2卡3卡4卡| 国产日韩精品久久久| 久久99蜜桃精品久久久久小说| 中文精品在线观看| 日韩视频中文字幕| 日韩精品不卡一区二区| 亚洲高清视频一区| 欧美日韩国产观看视频| 亚洲欧洲三级| 欧美一级免费看| 精品久久91| 欧美日韩一级片在线观看| 亚洲免费中文字幕| 91蜜桃婷婷狠狠久久综合9色| 最近中文字幕在线中文视频| 美女尤物久久精品| 精品欧美日韩| 精品综合久久久久| av午夜在线| 精品网站999| 日韩午夜一区| 中文字幕精品视频| 伊人网站在线| 欧美 日韩 综合| 久艹在线视频| 日韩欧美国产午夜精品| 亚洲理论中文字幕| 深夜福利一区| 日韩欧美三级视频| 欧美日韩精品综合在线| 国产免费永久在线观看| 精品国产91| 国产欧美在线观看| 中文字幕第一页在线| 国产 中文 字幕 日韩 在线| 玖玖在线免费视频| 国产成人精品日本亚洲专区61| 日韩精品欧美在线| 欧美日韩综合高清一区二区| 日韩欧美国产高清| 在线观看91精品国产入口| 久久久久久自在自线| 中文字幕亚洲区| 国产欧亚日韩视频| 一级特黄大欧美久久久| 在线欧美一级视频| 中文字幕成人乱码在线电影| 国产黄色在线| 国产欧美日韩亚州综合| 日韩在线观看视频一区二区| 日韩欧美在线精品| 婷婷久久综合九色国产成人| 伊人www22综合色| 欧美久久在线观看| 日韩欧美中文视频| 欧美日韩一二| 一区二区三区视频网站| 中文字幕人成乱码在线观看| www在线视频| 国产999在线观看| 国产精品一区二三区| 欧美日韩在线视频首页| 国产一区精品在线| 久久精品网站免费观看| 国产亚洲一区字幕| 亚洲一区视频在线观看视频| 国产91久久久久蜜臀青青天草二| 欧美国产三级| 中文字幕日韩欧美| 国产欧美中文在线| 欧美日韩在线视频免费观看 | 欧美日韩在线视频一区| 亚洲一区在线观看免费| 91精品国产免费| 中文字幕4区| 国产视频1区2区| 国产在线精品日韩| 亚洲一区日韩在线| 欧美日韩久久久| 在线看av的网址| 精品视频www| 中文字幕久久av| 国产午夜精品久久| 中文字幕日韩精品在线| 中文字幕国产欧美| 日韩三级视频中文字幕| 中文字幕视频一区二区三区久| 日韩在线视频免费观看| 中文字幕在线视频久| 免费视频最近日韩| 欧美色视频一区二区三区在线观看 | 日韩欧美在线字幕| 日韩精品在线免费观看视频| 91精品视频免费在线观看| 天堂在线www天堂中文在线| 精品精品久久| 久久99精品久久久久久青青日本| 日韩国产91| 一区二区日韩视频| 国产裸体歌舞团一区二区 | 精品久久久91| www日韩在线观看| 国产免费久久| 蜜臀91精品国产高清在线观看| 日韩中文字幕综合| 亚洲福利在线视频| 日韩欧美一级在线| 高清中文字幕在线| 国产最顶级的黄色片在线免费观看| 亚洲精品中文字幕乱码三区不卡| 欧美日韩在线视频免费观看| 国产日韩电影| 国产123在线| 日韩欧美一二三| 亚洲免费在线观看av| 久久视频www| 日韩欧美在线中文字幕| 欧美激情一区二区在线| 99久久精品国产成人一区二区| 精品日韩99亚洲| 色99中文字幕| 精品日韩一区二区三区免费视频| 欧美亚洲另类制服自拍| 欧美中文字幕视频在线观看| 亚洲理论中文字幕| 最新中文字幕在线| 亚洲精品中文字幕乱码三区| 日韩一级精品| 日韩欧美一级二级三级久久久| 在线观看国产一区| 日韩美女中文字幕| 久久精品欧美日韩精品| 欧美一级搡bbbb搡bbbb| 国产欧美亚洲一区| 国产字幕中文| 国产成人精品免费网站| 欧美日韩亚洲国内综合网| 欧美 日韩 国产在线| 国产欧美日韩高清| 国产福利久久久| 精品色蜜蜜精品视频在线观看| 青青国产91久久久久久| 一区二区三区高清在线| 中文字幕久久av| 日韩精品福利一区二区三区| 一区二区在线观看不卡| 中文字幕第一页在线| 欧美日韩高清在线一区| 久久久91精品| 在线不卡一区二区| 精品国产91乱高清在线观看| 中文字幕一区不卡| 日本а中文在线天堂| 国产中文在线视频| 欧美日韩成人一区二区| 中文字幕国产日韩|