成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識(shí)庫 > 基于HTML5 WebGL的3D機(jī)房的示例

基于HTML5 WebGL的3D機(jī)房的示例

熱門標(biāo)簽:成都智能外呼系統(tǒng)平臺(tái) 鎮(zhèn)江智能外呼系統(tǒng)有效果嗎 四川點(diǎn)撥外呼系統(tǒng) 南寧點(diǎn)撥外呼系統(tǒng)哪家公司做的好 江蘇智能電銷機(jī)器人哪家好 黃島區(qū)地圖標(biāo)注 電銷機(jī)器人電話用什么卡 當(dāng)涂高德地圖標(biāo)注 云南大理400電話申請(qǐng)官方

前言

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

效果圖

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

代碼生成

定義類

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

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

創(chuàng)建 Editor.Server 類

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

var S = E.Server = function(obj) {//服務(wù)器組件
    var color = obj.color, 
        frontImg = obj.frontImg;

    var node = this._node = new ht.Node();//創(chuàng)建節(jié)點(diǎn)
    node.s({//設(shè)置節(jié)點(diǎn)的樣式 s 為 setStyle 的縮寫
        'all.color': color,//設(shè)置節(jié)點(diǎn)六面的顏色
        'front.image': frontImg //設(shè)置節(jié)點(diǎn)正面的圖片
    });
};

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

接下來創(chuàng)建 Editor.Cabinet 機(jī)柜類 ,方法跟上面 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é)點(diǎn)的 3d 坐標(biāo)
    }
});

創(chuàng)建 Editor.Cabinet 類

這個(gè)類相對(duì)于前面的 Editor.Server 服務(wù)器組件類要相對(duì)復(fù)雜一點(diǎn),這個(gè)類中創(chuàng)建了一個(gè)柜身、柜門以及機(jī)柜內(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é)點(diǎn)的大小 為 setSize3d
    node.a('cabinet', this);//自定義 cabinet 屬性
    node.s({//設(shè)置節(jié)點(diǎn)的樣式 為 setStyle
        'all.color': color,//設(shè)置節(jié)點(diǎn)六面的顏色
        'front.visible': false//設(shè)置節(jié)點(diǎn)前面是否可見
    });

    if (Math.random() > 0.5) {
        node.addStyleIcon('alarm', {//向節(jié)點(diǎn)上添加 icon 圖標(biāo)
            names: ['icon 溫度計(jì)'],//包含多個(gè)字符串的數(shù)組,每個(gè)字符串對(duì)應(yīng)一張圖片或矢量(通過ht.Default.setImage注冊(cè))
            face: 'top',//默認(rèn)值為front,圖標(biāo)在3D下的朝向,可取值left|right|top|bottom|front|back|center
            position: 17,//指定icons的位置
            autorotate: 'y',//默認(rèn)值為false,圖標(biāo)在3D下是否自動(dòng)朝向眼睛的方向
            t3: [0, 16, 0],//默認(rèn)值為undefined,圖標(biāo)在3D下的偏移,格式為[x,y,z]
            width: 37,//指定每個(gè)icon的寬度,默認(rèn)根據(jù)注冊(cè)圖片時(shí)的寬度
            height: 32,//指定每個(gè)icon的高度,默認(rèn)根據(jù)注冊(cè)圖片時(shí)的高度
            textureScale: 4,//默認(rèn)值為2,該值代表內(nèi)存實(shí)際生成貼圖的倍數(shù),不宜設(shè)置過大否則影響性能
            visible: { func: function() { return !!E.alarmVisible; }}//表示該組圖片是否顯示
        });
    }

    var door = this._door = new ht.DoorWindow();//柜門
    door.setWidth(s3[0]);//置圖元在3D拓?fù)渲械膞軸方向的長(zhǎng)度
    door.setHeight(1);//設(shè)置圖元在3D拓?fù)渲械膠軸長(zhǎng)度
    door.setTall(s3[1]);//控制Node圖元在y軸的長(zhǎng)度
    door.setElevation(0);//設(shè)置圖元中心在3D坐標(biāo)系中的y坐標(biāo)
    door.setY(s3[2] * 0.5);//設(shè)置節(jié)點(diǎn)在 y 軸的位置
    door.setHost(node);//設(shè)置吸附
    door.s({//設(shè)置節(jié)點(diǎn)樣式 setStyle
        'all.color': color,//設(shè)置節(jié)點(diǎn)六面顏色
        'front.image': doorFrontImg,//設(shè)置節(jié)點(diǎn)正面圖片
        'front.transparent': true,//設(shè)置節(jié)點(diǎn)正面是否透明
        'back.image': doorBackImg,//設(shè)置節(jié)點(diǎn)背面的圖片
        'back.uv': [1,0, 1,1, 0,1, 0,0],//自定義節(jié)點(diǎn)后面uv貼圖,為空采用默認(rèn)值[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 中聲明的獲取隨機(jī)數(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ù)器 組件精細(xì)'
        });
        server.s3(s3[0] - 2, h, s3[2] - 4);//設(shè)置節(jié)點(diǎn)大小
        server.setElevation((r - max * 0.5) * (h + 2));//設(shè)置節(jié)點(diǎn)中心點(diǎn)在 y 軸的坐標(biāo)
        server.setHost(node);//設(shè)置節(jié)點(diǎn)的吸附

        serverList.push(server);//向 serverList 中添加 server 節(jié)點(diǎn)
    });
};

上面代碼中唯一沒提到的是 Editor.randomList 函數(shù),這個(gè)函數(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;
    }
};

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

場(chǎng)景創(chuàng)建

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

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

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

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

為了能夠重復(fù)地設(shè)置 eye 和 center,將設(shè)置這兩個(gè)參數(shù)對(duì)應(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];
    // 啟動(dòng) 500 毫秒的動(dòng)畫過度
    ht.Default.startAnim({
        duration: 500,
        easing: easing,//動(dòng)畫緩動(dòng)函數(shù)
        finishFunc: finish || function() {}, //動(dòng)畫結(jié)束后調(diào)用的函數(shù)
        action: function(v, t) {//設(shè)置動(dòng)畫v代表通過easing(t)函數(shù)運(yùn)算后的值,t代表當(dāng)前動(dòng)畫進(jìn)行的進(jìn)度[0~1],一般屬性變化根據(jù)v參數(shù)進(jìn)行
            g3d.setEye([ //設(shè)置 3D 場(chǎng)景中的 eye 眼睛的值,為一個(gè)數(shù)組,分別對(duì)應(yīng) x,y,z 軸的值 
                e[0] + dx * v,
                e[1] + dy * v,
                e[2] + dz * v
            ]);
        }
    });
};

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

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

g3d.mi(function(e) {//addInteractorListener 事件監(jiān)聽函數(shù)
    if (e.kind !== 'doubleClickData')  //判斷事件類型為雙擊節(jié)點(diǎn)
        return;
    var data = e.data, p3;

    if (data.a('cabinet')) //機(jī)身
        p3 = data.p3();
    else {
        host = data.getHost(); //獲取點(diǎn)擊節(jié)點(diǎn)的吸附對(duì)象
        if (host && host.a('cabinet')) {//如果吸附對(duì)象為 cabinet
            p3 = host.p3();
        }
    }

    if (!p3) return;

    setCenter(p3); //設(shè)置 center 目標(biāo)的要移向位置為 cabinet 的位置
    setEye([p3[0], 211, p3[2] + 247]); //設(shè)置 eye 眼睛要移向的位置
});

頂部導(dǎo)航欄

一開始看到這個(gè)例子的時(shí)候我在想,這人好厲害,我用 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è)置為行高的負(fù)值則可以使多行處于同一行
form.setVPadding(0);//設(shè)置表單頂部和頂部與組件內(nèi)容的間距
form.addRow([null, {//向表單中添加一行組件,第一個(gè)參數(shù)為元素?cái)?shù)組,元素可為字符串、json格式描述的組件參數(shù)信息、html元素或者為null
    image: {
        icon: './symbols/inputBG.json',
        stretch: 'centerUniform'
    }
}], [40, 260]);//第二個(gè)參數(shù)為每個(gè)元素寬度信息數(shù)組,寬度值大于1代表固定絕對(duì)值,小于等于1代表相對(duì)值,也可為80+0.3的組合
form.addRow([null, null, {
    id: 'searchInput',
    textField: {}
}, {
    element: '機(jī)房可視化管理系統(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]);

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

window.addEventListener('load', function() {
    g3d.addToDOM(); //將 3D 場(chǎng)景添加進(jìn) body 中

    document.body.appendChild(E.top.getView()); //將 form 表單組件底層 div 添加進(jìn) body 中

    window.addEventListener('resize', function() {//窗口大小變化事件監(jiān)聽
        E.top.iv();//更新 form 表單的底層 div 
    });
});

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

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

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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:南京 佳木斯 淮安 咸寧 酒泉 十堰 廣西 西寧

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《基于HTML5 WebGL的3D機(jī)房的示例》,本文關(guān)鍵詞  基于,HTML5,WebGL,的,機(jī)房,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《基于HTML5 WebGL的3D機(jī)房的示例》相關(guān)的同類信息!
  • 本頁收集關(guān)于基于HTML5 WebGL的3D機(jī)房的示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    狠狠操一区二区三区| 亚洲美女在线免费观看| 欧美另类videosbest视频| 欧美在线视频精品| zzzwww在线看片免费| 久艹在线观看视频| 欧美无毛视频| 亚洲一级Av无码毛片久久精品| 欧美美女一级片| 狠狠躁夜夜躁久久躁别揉| 亚洲女人小视频在线观看| 一区二区在线观看视频在线| 日韩成人av网| 欧美午夜性色大片在线观看| 亚洲va欧美va人人爽午夜| 欧美三级小说| 在线视频1卡二卡三卡| 四虎精品在线| 日本中文字幕视频| 亚洲人体一区| 国产在线黄色| 日韩精品一区二区三区swag| 日韩理论片在线| 亚洲人成电影| 国产精品久久久久久一区二区三区| 亚洲欧美综合视频| 国产69精品久久久| 伊人久久大香线蕉午夜av| 欧美精品v日韩精品v国产精品| chinesespank调教| 亚洲国产精品视频在线| 中文字幕+乱码+中文乱码www| 欧美日在线观看| 国产精品一区在线观看乱码| 亚洲+变态+欧美+另类+精品| 欧美热在线视频精品999| 水蜜桃色314在线观看| 亚洲一区视频在线| 97在线免费观看| 丰满饥渴老女人hd| 88xx成人永久免费观看| 亚洲v精品v日韩v欧美v专区| 欧美体内she精视频| 五月激情综合色| 在线播放91灌醉迷j高跟美女| 国产精品国产三级国产专区53| 久久亚洲综合色一区二区三区| 美女脱光衣服与内衣内裤一区二区三区四区| 国产欧美一区二区在线播放| 欧美高清性xxxxhd| 亚洲日本在线a| 神马午夜伦理不卡| 日本中文字幕在线2020| 国产jjizz一区二区三区视频| 亚洲a级精品| wwwav网站| 国产欧美日韩综合一区在线观看| 日本在线视频中文有码| 肉体视频在线| 奇米影视888狠狠狠777不卡| 91在线播放网址| 少妇光屁股影院| 午夜性福利视频| 中文字幕第三区| 国产视频亚洲视频| 在线日韩一区| 影音先锋中文资源站| 亚洲综合久久久| 亚洲不卡1区| 精品国产高清自在线一区二区三区| 国产精品区一区二区三| 性xxxxfreexxxxx欧美丶| 精品人妻午夜一区二区三区四区| 精品高清久久| 国产一卡2卡3卡4卡网站免费| 国产精品一区在线播放| 久久久久久久久久久久网站| 欧美性xxxx巨大黑人猛| 国产午夜精品理论片a级探花| 国产精品二区二区三区| 久久久国产精品成人免费| 人妻中文字幕一区二区三区| 国产综合久久久久| 精品国产第一区二区三区观看体验| 在线欧美日韩精品| 国产伦精品一区二区三区视频我| 穿情趣内衣被c到高潮视频| 亚洲影视第一页| 亚洲高清国产精品| 色av男人的天堂免费在线| 日本日本19xxxⅹhd乱影响| 欧美一二三区视频| 国产网友自拍视频导航网站在线观看| 97视频在线播放| 国产精品wwwwww| 18在线观看的| 亚洲精品国产欧美| 欧美一二三在线| 国产精品一二三区在线观看| 国产真人做爰视频免费| 日本久久久久久久久| 久久国产精品一区二区| 日韩精品1区2区3区| 国产精品久久久久野外| 亚洲熟妇av乱码在线观看| 在线免费观看黄色片| 精品成人一区| 欧美成人高清在线| 国产乱码精品一区二区三区亚洲人| 在线看的黄色网址| 福利一区二区三区四区| 精品女同一区二区三区在线播放| 日韩高清电影免费| 人妻va精品va欧美va| 久久久一区二区三区| 亚洲人成电影网站| 亚洲综合免费视频| mm131丰满少妇人体欣赏图| 国产精品无码专区av在线播放| 高清一区二区三区av| 亚洲天堂网一区二区| 看片网站欧美日韩| 成人动漫一区| 日韩一级欧洲| 久久久久国产精品嫩草影院| 最近2018年中文字幕在线| 欧美另类亚洲| 亚洲精品无码专区| 青青青手机在线视频观看| 亚洲精品18在线观看| sese在线| 538国产精品一区二区免费视频| sese在线| 91蜜桃网址入口| 一区二区欧美在线| 九九在线高清精品视频| 欧美高清videos高潮hd| 久久社区一区| 成人在线观看一区| 少妇**av毛片在线看| 一本久久a久久精品亚洲| 亚洲午夜久久久久久久久久久| 国产一区高清视频| 色偷偷久久一区二区三区| 8x国产一区二区三区精品推荐| 国产亚洲一区二区三区| 国产精品久久久久久久久影视| а中文在线天堂| 久草热久草在线频| 久久久久久一区二区| 中文字幕人妻丝袜乱一区三区| 久久国产人妖系列| 91精品丝袜国产高跟在线| 国产精品91在线观看| 一本色道久久综合亚洲91| 在线免费观看一区| 一本一本久久a久久精品牛牛影视| 欧美一区二区麻豆红桃视频| 欧美视频免费一区二区三区| 日韩午夜精品视频| xxxx69视频| 亚洲精品18在线观看| 亚洲免费成人在线视频| 91嫩草国产丨精品入口麻豆| 乱精品一区字幕二区| 国产一二三视频| 亚洲成av人影院在线观看| 国产精品视频无码| 精品国产电影一区二区| 国产福利热线视频| 豆国产97在线 | 亚洲| 亚洲成人久久影院| 超碰在线97国产| blacked蜜桃精品一区| 亚洲va欧美va国产综合久久| 成年人小视频在线观看| 欧美女王vk| 五月婷婷在线观看| 日本tube24xxxxx| 国产成人av一区二区三区在线观看| 欧美日韩在线精品一区二区三区激情综合| 91超碰在线电影| 四虎精品一区二区永久在线观看| 免费观看的av| 国产精品一区二区91| 成人免费观看在线观看| 亚洲精品v天堂中文字幕| 欧美精选一区二区| 蜜桃久久精品一区二区| 天天射综合网视频| 成人av激情人伦小说| 精品magnet| 久久免费在线观看| 男人的天堂久久久| 国产高清在线a视频大全| 小视频在线播放| 你懂的在线观看视频| 亚洲精品国产成人av在线| 久久99视频免费| 久久久久国产精品无码免费看| 国产精品一级二级三级| 亚洲女同二女同志奶水| 久久99这里只有精品| 成人激情校园春色| 青青草视频在线视频| 亚洲黄色在线观看视频| 黄色激情在线视频| 国产专区在线播放| 九色在线视频| 8x国产一区二区三区精品推荐| 17c丨国产丨精品视频| 最色在线观看| 国产不卡一二三| 91免费电影网站| 伊人久久大香线蕉综合热线| 亚洲最新视频在线观看| 久久亚洲私人国产精品va媚药| 欧美日韩国产a| 日韩av中文字幕一区二区| 成人免费黄色大片| av福利在线| 在线视频三级| av高清一区| 久久久久久久久久久久久久久久久| 亚洲第一色av| 欧美极品少妇xxxxⅹ喷水| 婷婷五月色综合| 成人在线免费视频观看| 亚洲一区二区三区精品在线| 天干天干啦夜天天天视频| 丰满人妻一区二区三区免费视频棣| 精品综合免费视频观看| 亚洲精华液一区二区三区| 欧美 日本 国产| 欧美日韩中文国产一区发布| 欧洲精品在线播放| 污污片在线免费视频| 91av在线免费视频| 国产精品女人网站| 国产成人三级一区二区在线观看一| 免费亚洲精品视频| 国产久一道中文一区| 永久免费在线观看视频| 亚洲一区二区三区成人| 日本理论片2828理论片| 在线一区二区日韩| 国产成人在线一区| 91亚洲国产成人久久精品麻豆| 在线免费观看日韩视频| 色呦哟—国产精品| aa片在线观看视频在线播放| 久88久久88久久久| 一个人看的www视频在线免费观看| www.色天使| 91精品国产吴梦梦| 日韩综合一区二区| 亚洲一区二区电影| 国产精品成人av| 日韩中文影院| 亚洲人成网站精品片在线观看| 亚洲在线观看视频| 免费在线观看毛片网站| 国产精品白丝久久av网站| 日韩欧美国产小视频| 久久国产精品网| 91精品国产乱码久久久久久蜜臀| 欧美特级限制片免费在线观看| 五月天黄色网址| 麻豆传媒mv| 国产xxxx孕妇| 国产精品啊啊啊| 国产精品扒开腿做爽爽爽的视频| 极品魔鬼身材女神啪啪精品| 91免费在线视频观看| 欧美日韩一级二级三级| 久久久久亚洲av成人无码电影| 欧美一区二区三区久久久| 久久精品夜色噜噜亚洲aⅴ| 91麻豆精品国产综合久久久久久| 天天操天天舔| 制服丝袜在线一区| 久久精品一区八戒影视| 欧美午夜精品久久久久久孕妇| 色婷婷av一区二区三区丝袜美腿| 男女羞羞免费视频| 国产xxxx在线观看| 亚洲综合自拍| 再深点灬舒服灬太大了少妇| 日韩大片在线永久免费观看网站| 国产精品免费精品自在线观看| 亚洲三级在线播放| 一本久久精品| 99久久精品免费看国产小宝寻花| 亚洲一区欧美| 精品国产乱码久久久久久牛牛| 高跟丝袜欧美一区| 欧美激情福利视频在线观看免费| 久久99热这里只有精品国产| 99久久精品免费精品国产| 欧美久久影院| 91在线观看地址| 国产精品免费观看久久| 美女xx视频| 日韩影视高清在线观看| 欧美日韩看看2015永久免费| 欧美大片在线免费观看| 狠狠躁夜夜躁人人爽天天天天97| 美美女免费毛片| 国产同性人妖ts口直男| 综合136福利视频在线| 精品国产一区二区三区久久久狼牙| 91久久精品国产91性色| 国产性色av一区二区| 欧美午夜视频一区二区| 亚洲一本二本| 日韩三级av高清片| 亚洲美女在线看| 一级特黄免费视频| 91成人免费在线观看| www.亚洲视频| 手机福利在线视频| 国产一区二区三区亚洲| 国产一区久久久| av电影在线免费观看| 国产一区二区精品调教| 国产精品国产精品国产专区不卡| 国产porny蝌蚪视频| 欧美性大战久久久久久久|