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

寶石碰碰:HTML5開發(fā)Android本地化App游戲案例

移動(dòng)開發(fā) Android
本次來說一說如何利用lufylegend.js引擎制作一款HTML5游戲后,將其轉(zhuǎn)換為android本地化的App應(yīng)用,轉(zhuǎn)換過程其實(shí)很簡(jiǎn)單,下面一步步來做說明。

首先來開發(fā)一個(gè)類似于對(duì)對(duì)碰的游戲,游戲界面如下。

游戲操作:上下左右劃動(dòng)屏幕,來操作寶石向不同的方向移動(dòng)。

游戲規(guī)則:當(dāng)有三個(gè)一樣的寶石相鄰則消除,被消除過一次的寶石會(huì)變成半透明,當(dāng)所有寶石都被消除一次后,則進(jìn)入下一關(guān)。

游戲測(cè)試連接:http://lufylegend.com/demo/GemGem

制作開始

一,準(zhǔn)備

首先,需要下載lufylegend.js引擎,下載地址:http://lufylegend.com/lufylegend

二,游戲開發(fā)

引擎lufylegend1.7.0中擴(kuò)展了LLoadManage靜態(tài)類,可以讀取圖片,js文件以及文本文件,本次游戲開發(fā)就來體驗(yàn)一下這個(gè)新功能,首先看下面數(shù)組:

  1. var loadData = [   
  2. {path:"../jquery.js",type:"js"},   
  3. {path:"./js/share.js",type:"js"},   
  4. {path:"./js/Social.js",type:"js"},   
  5. {path:"./js/GameRanking.js",type:"js"},   
  6. {path:"./js/GameLogo.js",type:"js"},   
  7. {path:"./js/GameClear.js",type:"js"},   
  8. {path:"./js/Gem.js",type:"js"},   
  9. {path:"./js/Stage.js",type:"js"},   
  10. {path:"./js/Clock.js",type:"js"},   
  11. {path:"./js/Point.js",type:"js"},   
  12. {path:"./js/GetPoint.js",type:"js"},   
  13. {path:"./js/Bullet.js",type:"js"},   
  14. {path:"./js/Event.js",type:"js"},   
  15. {path:"./js/function.js",type:"js"},   
  16. {path:"./js/GameBody.js",type:"js"},   
  17. {name:"num.+",path:"./images/plus.png"},   
  18. {name:"num.0",path:"./images/0.png"},   
  19. {name:"num.1",path:"./images/1.png"},   
  20. {name:"num.2",path:"./images/2.png"},   
  21. {name:"num.3",path:"./images/3.png"},   
  22. {name:"num.4",path:"./images/4.png"},   
  23. {name:"num.5",path:"./images/5.png"},   
  24. {name:"num.6",path:"./images/6.png"},   
  25. {name:"num.7",path:"./images/7.png"},   
  26. {name:"num.8",path:"./images/8.png"},   
  27. {name:"num.9",path:"./images/9.png"},   
  28. {name:"back",path:"./images/back.png"},   
  29. {name:"line",path:"./images/line.png"},   
  30. {name:"clear",path:"./images/clear.png"},   
  31. {name:"gem01",path:"./images/gem01.png"},   
  32. {name:"gem02",path:"./images/gem02.png"},   
  33. {name:"gem03",path:"./images/gem03.png"},   
  34. {name:"gem04",path:"./images/gem04.png"},   
  35. {name:"gem05",path:"./images/gem05.png"},   
  36. {name:"gem06",path:"./images/gem06.png"},   
  37. {name:"gem07",path:"./images/gem07.png"},   
  38. {name:"gem08",path:"./images/gem08.png"},   
  39. {name:"gem09",path:"./images/gem09.png"},   
  40. {name:"ico_sina",path:"./images/ico_sina.gif"},   
  41. {name:"ico_qq",path:"./images/ico_qq.gif"},   
  42. {name:"ico_facebook",path:"./images/ico_facebook.png"},   
  43. {name:"ico_twitter",path:"./images/ico_twitter.png"}   
  44. ];   

將需要的js文件和圖片文件都加到數(shù)組內(nèi),如果需要加載文件為js文件時(shí),需要指定type為js,如果加載的文件為圖片,則type可以不設(shè)定。

讀取過程與之前用法完全一樣:

  1. function main(){   
  2.     loadingLayer = new LoadingSample3();   
  3.     addChild(loadingLayer);    
  4.     LLoadManage.load(   
  5.         loadData,   
  6.         function(progress){   
  7.             loadingLayer.setProgress(progress);   
  8.         },   
  9.         function(result){   
  10.             LGlobal.setDebug(true);   
  11.             datalist = result;   
  12.             removeChild(loadingLayer);   
  13.             loadingLayer = null;   
  14.             gameInit();   
  15.         }   
  16.     );   
  17. }   

下面來向游戲中添加8行8列64塊寶石,具體做法如下:

  1. function addGem(){   
  2.     stage.setStage(stage.num + 1);   
  3.     gemLayer.removeAllChild();   
  4.     list = [];   
  5.     //添加寶石   
  6.     for(i=0;i<8;i++){   
  7.         list.push([]);   
  8.         for(var j=0;j<8;j++){   
  9.             num = (Math.random()*9 >>> 0)+1;   
  10.             g = new Gem(num);   
  11.             g.x = j*60;   
  12.             g.y = i*60+120;   
  13.             gemLayer.addChild(g);   
  14.             list[i].push(g);   
  15.         }   
  16.     }   
  17.     //檢驗(yàn)可消除寶石   
  18.     do{   
  19.         clearList = checkClear();   
  20.         if(clearList.length > 0){   
  21.             for(i=0;i<clearList.length;i++){   
  22.                 g = clearList[i];   
  23.                 num = (Math.random()*9 >>> 0)+1;   
  24.                 g.change(num);   
  25.             }   
  26.         }   
  27.     }while(clearList.length > 0);   
  28. }   

上面代碼中的Gem對(duì)象是一個(gè)寶石類,完整代碼如下:

  1. function Gem(num){   
  2.     var self = this;   
  3.     base(self,LSprite,[]);   
  4.     self.num = num;   
  5.     self.bitmap = new LBitmap(new LBitmapData(datalist["gem0"+num]));   
  6.     self.bitmap.x=self.bitmap.y=10;   
  7.     self.addChild(self.bitmap);   
  8.        
  9. }   
  10. Gem.prototype.change = function (num){   
  11.     var self = this;   
  12.     self.num = num;   
  13.     self.bitmap.bitmapData = new LBitmapData(datalist["gem0"+num]);   
  14. }   

Gem類繼承自LSprite,內(nèi)部包含一個(gè)LBitmap對(duì)象來顯示寶石圖片。

代碼清單3中調(diào)用了checkClear函數(shù),來檢驗(yàn)是否有可消除寶石,檢測(cè)方法為先進(jìn)行橫向檢索,然后進(jìn)行縱向檢索。

  1. clearList = [];   
  2.     //橫向檢索   
  3.     for(i=0;i<8;i++){   
  4.         checkList = [list[i][0]];   
  5.         for(j=1;j<8;j++){   
  6.             if(checkList[checkList.length - 1].num == list[i][j].num){   
  7.                 checkList.push(list[i][j]);   
  8.             }else{   
  9.                 clearList = addClearList(clearList,checkList);   
  10.                 checkList = [list[i][j]];   
  11.             }   
  12.         }   
  13.         clearList = addClearList(clearList,checkList);   
  14.     }   
  15.     //縱向檢索   
  16.     for(i=0;i<8;i++){   
  17.         checkList = [list[0][i]];   
  18.         for(j=1;j<8;j++){   
  19.             if(checkList[checkList.length - 1].num == list[j][i].num){   
  20.                 checkList.push(list[j][i]);   
  21.             }else{   
  22.                 clearList = addClearList(clearList,checkList);   
  23.                 checkList = [list[j][i]];   
  24.             }   
  25.         }   
  26.         clearList = addClearList(clearList,checkList);   
  27.     }   

addClearList函數(shù)作用是將可消除寶石壓入clearList數(shù)組,做法如下:

  1. function addClearList(clearList,checkList){   
  2.     if(checkList.length >= 3){   
  3.         clearList = clearList.concat(checkList)   
  4.     }   
  5.     return clearList;   
  6. }   

游戲操作需要?jiǎng)潉?dòng)屏幕,但是在lufylegend.js引擎中,是沒有劃動(dòng)屏幕的事件的,所以我通過下面MOUSE_DOWN,MOUSE_UP獲取點(diǎn)擊時(shí)和點(diǎn)擊后的位置,來模擬一下劃動(dòng)事件。

  1. backLayer.addEventListener(LMouseEvent.MOUSE_DOWN,onDown);   
  2. backLayer.addEventListener(LMouseEvent.MOUSE_UP,onUp);   

再來看看具體做法,先是onDown函數(shù)。

  1. function onDown(e){   
  2.     if(mouse_down_obj.isMouseDown)return;   
  3.     continuous = 0;   
  4.     mouse_down_obj.x = e.offsetX;   
  5.     mouse_down_obj.y = e.offsetY;   
  6.     mouse_down_obj.time = new Date().getTime();   
  7.     mouse_down_obj.cx = e.offsetX/60 >>> 0;   
  8.     mouse_down_obj.cy = (e.offsetY - 120)/60 >>> 0;   
  9.     mouse_down_obj.isMouseDown = true;   
  10.     list[mouse_down_obj.cy][mouse_down_obj.cx].graphics.drawRect(1,"black",[0, 0, 60, 60],true,"#000000");   
  11. }   

通過e.offsetX和e.offsetY來獲取點(diǎn)擊位置,通過getTime()來獲取點(diǎn)擊時(shí)刻的時(shí)間。

再來看看onUp函數(shù)。

  1. function onUp(e){   
  2.     list[mouse_down_obj.cy][mouse_down_obj.cx].graphics.clear();   
  3.     if(new Date().getTime() - mouse_down_obj.time > 500){   
  4.         mouse_down_obj.isMouseDown = false;   
  5.         return;   
  6.     }   
  7.     var mx = e.offsetX - mouse_down_obj.x;   
  8.     var my = e.offsetY - mouse_down_obj.y;   
  9.     if(Math.abs(mx) > Math.abs(my)){   
  10.         if(mx > 50){   
  11.             move("right");   
  12.             return;   
  13.         }else if(mx < -50){   
  14.             move("left");   
  15.             return;   
  16.         }   
  17.     }else{   
  18.         if(my > 50){   
  19.             move("down");      
  20.             return;   
  21.         }else if(my < -50){   
  22.             move("up");   
  23.             return;   
  24.         }   
  25.     }   
  26.     mouse_down_obj.isMouseDown = false;   
  27. }   

函數(shù)中通過同樣的方法得到點(diǎn)擊結(jié)束時(shí)的位置和時(shí)間,然后與點(diǎn)擊時(shí)刻做比較,最后計(jì)算劃動(dòng)的方向,然后根據(jù)劃動(dòng)的方向來調(diào)用move函數(shù),讓寶石移動(dòng)。

move函數(shù)如下:

  1. function move(dir){   
  2.     direction = dir;   
  3.     var m = moveGem(dir,8);   
  4.     var mx = m[0],my = m[1];   
  5.     var obj,fun;   
  6.     for(var i=0;i<8;i++){   
  7.         if(mx == 0){   
  8.             obj = list[i][mouse_down_obj.cx];   
  9.         }else{   
  10.             obj = list[mouse_down_obj.cy][i];   
  11.         }   
  12.         if(i < 7){   
  13.             fun = null;   
  14.         }else{   
  15.             fun = function(){   
  16.                 hiddenObj.visible = true;   
  17.                 checkClear();   
  18.             };   
  19.         }   
  20.         LTweenLite.to(obj,0.3,   
  21.         {    
  22.             x:obj.x+mx,   
  23.             y:obj.y+my,   
  24.             onComplete:fun,   
  25.             ease:Strong.easeOut   
  26.         });   
  27.        
  28.     }   
  29. }   

下面以向右移動(dòng)為例來說明一下move函數(shù)的處理過程,如下:

先將最左邊的一個(gè)寶石H移到最左邊,然后再利用LTweenLite緩動(dòng)類將整個(gè)一行8個(gè)寶石,向右緩動(dòng)一個(gè)單位。向左的話正好相反,向上向下也是同樣的原理。

每次緩動(dòng)結(jié)束,要調(diào)用一次checkClear函數(shù),來判斷一下是否有可消除的寶石,如果有則開始消除寶石,如何來消除寶石呢?

我依然以向右劃動(dòng)來舉例說明,看下面圖片,假設(shè)D1,D2,D3可消除,E4,F4,G4可消除:

那么首先將D1,D2,D3移到左邊邊界外,E4,F4,G4也移到邊界外,表示被消除, 之后對(duì)每一行的寶石進(jìn)行位置判定,如每行的第一個(gè)寶石的x坐標(biāo)應(yīng)該是60,第二個(gè)為120,以此類推。如果他們不在自己的相應(yīng)位置上,那么將其向左移動(dòng)到 規(guī)定位置就可以了,寫成代碼的話,如下:

  1. function moveList(){   
  2.     var gem,time,maxTime,mx,my,fun;   
  3.     maxTime = 0;   
  4.     switch(direction){   
  5.         case "left":   
  6.             for(i=0;i<8;i++){   
  7.                 for(j=0;j<8;j++){   
  8.                     gem = list[i][j];   
  9.                     mx = 60*j;   
  10.                     if(gem.x > mx){   
  11.                         time = 0.3*((gem.x-mx) / 60 >>> 0);   
  12.                         if(maxTime < time)maxTime = time;   
  13.                         fun = null;   
  14.                         if(gem.x > 420){   
  15.                             fun = function(gem){   
  16.                                 if(gem.x <= 420)gem.visible = true;   
  17.                             }   
  18.                         }   
  19.                         LTweenLite.to(gem,time,   
  20.                         {    
  21.                             x:mx,   
  22.                             onUpdate:fun,   
  23.                             onComplete:fun,   
  24.                             ease:Strong.easeOut   
  25.                         });   
  26.                     }   
  27.                 }   
  28.             }   
  29.             break;   
  30.         case "right":   
  31.             for(i=0;i<8;i++){   
  32.                 for(j=0;j<8;j++){   
  33.                     gem = list[i][j];   
  34.                     mx = 60*j;   
  35.                     if(gem.x < mx){   
  36.                         time = 0.3*((mx-gem.x) / 60 >>> 0);   
  37.                         if(maxTime < time)maxTime = time;   
  38.                         fun = null;   
  39.                         if(gem.x < 0){   
  40.                             fun = function(gem){   
  41.                                 if(gem.x >= 0)gem.visible = true;   
  42.                             }   
  43.                         }   
  44.                         LTweenLite.to(gem,time,   
  45.                         {    
  46.                             x:mx,   
  47.                             onUpdate:fun,   
  48.                             onComplete:fun,   
  49.                             ease:Strong.easeOut   
  50.                         });   
  51.                     }   
  52.                 }   
  53.             }   
  54.             break;   
  55.         case "up":   
  56.             for(i=0;i<8;i++){   
  57.                 for(j=0;j<8;j++){   
  58.                     gem = list[j][i];   
  59.                     my = 120+60*j;   
  60.                     if(gem.y > my){   
  61.                         time = 0.3*((gem.y-my) / 60 >>> 0);   
  62.                         if(maxTime < time)maxTime = time;   
  63.                         fun = null;   
  64.                         if(gem.y > 560){   
  65.                             fun = function(gem){   
  66.                                 if(gem.y <= 560)gem.visible = true;   
  67.                             }   
  68.                         }   
  69.                         LTweenLite.to(gem,time,   
  70.                         {    
  71.                             y:my,   
  72.                             onUpdate:fun,   
  73.                             onComplete:fun,   
  74.                             ease:Strong.easeOut   
  75.                         });   
  76.                     }   
  77.                 }   
  78.             }   
  79.             break;   
  80.         case "down":   
  81.             for(i=0;i<8;i++){   
  82.                 for(j=0;j<8;j++){   
  83.                     gem = list[j][i];   
  84.                     my = 120+60*j;   
  85.                     if(gem.y < my){   
  86.                         time = 0.3*((my-gem.y) / 60 >>> 0);   
  87.                         if(maxTime < time)maxTime = time;   
  88.                         fun = null;   
  89.                         if(gem.y < 120){   
  90.                             fun = function(gem){   
  91.                                 if(gem.y >= 120)gem.visible = true;   
  92.                             }   
  93.                         }   
  94.                         LTweenLite.to(gem,time,   
  95.                         {    
  96.                             y:my,   
  97.                             onUpdate:fun,   
  98.                             onComplete:fun,   
  99.                             ease:Strong.easeOut   
  100.                         });   
  101.                     }   
  102.                 }   
  103.             }   
  104.             break;   
  105.     }   
  106.     LTweenLite.to({},maxTime*1.5,   
  107.     {    
  108.         onComplete:checkStageClear,   
  109.         ease:Strong.easeOut   
  110.     });   
  111. }   

當(dāng)然,游戲是有時(shí)間限制的,看下面的Clock類:

  1. function Clock(){   
  2.     var self = this;   
  3.     base(self,LSprite,[]);   
  4.     self.timer = 0;   
  5.     self.addTimer = 0.05;   
  6.     self.graphics.drawArc(5,"#333333",[0,0,70,0,2*Math.PI]);   
  7.        
  8. }   
  9. Clock.prototype.onframe = function (){   
  10.     var self = this;   
  11.     self.timer += self.addTimer;   
  12.     self.graphics.clear();   
  13.     self.graphics.drawArc(10,"#333333",[0,0,70,0,2*Math.PI]);   
  14.     self.graphics.drawArc(5,"#ffffff",[0,0,70,-Math.PI*0.5,Math.PI*self.timer/180-Math.PI*0.5]);   
  15. }   

首先將Clock加載到游戲中,然后再利用ENTER_FRAME時(shí)間軸事件,來不斷調(diào)用Clock的onframe不斷的繪制圓弧,當(dāng)timer的數(shù)值大于等于360的時(shí)候代表畫完了整個(gè)圓弧,那么游戲結(jié)束。

以上,游戲的主要原理都介紹完了,下面看看如何來把游戲轉(zhuǎn)化為本地App

三,發(fā)布本地化App

首先,用Eclipse新建一個(gè)Android Project;

注:如何搭建Android環(huán)境,我就不說了,網(wǎng)上教程多得是,隨便百度一下吧。

然后,填寫項(xiàng)目名稱,并選擇相應(yīng)的sdk版本,這里我選了2.2;

接著是填寫相應(yīng)數(shù)據(jù),這個(gè)隨自己心情就可以了。

接著,重點(diǎn)來了,在工程下的assets文件夾下,簡(jiǎn)歷一個(gè)www文件夾(名字自己隨意),然后把剛才開發(fā)好的游戲復(fù)制到這個(gè)文件夾下,當(dāng)然,lufylegend引擎也必須復(fù)制過來。

接著修改res/layout/main.xml文件,添加webView,如下:

  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   
  3.     android:layout_width="fill_parent"   
  4.     android:layout_height="fill_parent"   
  5.     android:orientation="vertical" >   
  6.     <WebView   
  7.         android:id="@+id/webView1"   
  8.         android:layout_width="match_parent"   
  9.         android:layout_height="match_parent" />   
  10. </LinearLayout>   

最后,修改Main.java文件,利用webView來顯示html網(wǎng)頁,如下:

  1. public class Main extends Activity {   
  2.     /** Called when the activity is first created. */   
  3.     @Override   
  4.     public void onCreate(Bundle savedInstanceState) {   
  5.         super.onCreate(savedInstanceState);   
  6.         setContentView(R.layout.main);   
  7.         WebView webview = (WebView )findViewById(R.id.webView1);   
  8.         webview.getSettings().setJavaScriptEnabled(true);   
  9.         webview.setVerticalScrollbarOverlay(true);   
  10.         webview.loadUrl("file:///android_asset/www/index.html");   
  11.     }   
  12. }   

好了,運(yùn)行程序吧。畫面如下:

最后,想要發(fā)布游戲?yàn)?apk文件的話,build一下就好了。

結(jié)束了,簡(jiǎn)單吧?

四,源碼

最后給出本次游戲的源代碼:

http://lufylegend.com/lufylegend_download/GemGem.rar

注:只含游戲源碼,lufylegend.js引擎請(qǐng)自己到官網(wǎng)下載

責(zé)任編輯:徐川 來源: csdn
相關(guān)推薦

2015-09-14 11:55:32

海外游戲本地化案例

2011-04-25 10:36:39

HTML5

2013-10-21 15:24:49

html5游戲

2013-03-22 16:49:12

2015-07-08 16:38:10

Cocos游戲引擎

2012-01-06 09:45:23

HTML5游戲開發(fā)貨幣化

2013-03-21 09:32:41

2017-01-03 18:09:33

HTML5本地存儲(chǔ)Web

2013-03-25 17:16:11

2015-10-23 13:44:14

巴巴獵

2013-01-08 11:00:20

IBMdW

2012-05-03 14:29:53

HTML5

2014-12-30 17:13:51

HTML5

2014-11-12 16:00:12

火舞游戲

2016-10-19 10:49:43

Linux

2015-09-06 09:51:02

html5開發(fā)經(jīng)驗(yàn)開發(fā)工具

2015-09-06 13:26:41

HTML5游戲開發(fā)工具手游開發(fā)

2015-09-07 14:17:44

HTML5游戲開發(fā)工具

2012-05-15 13:57:41

HTML5

2016-01-05 09:39:32

HTML5游戲開發(fā)工具
點(diǎn)贊
收藏

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

成人黄页毛片网站| 91精品天堂福利在线观看| 精品久久久久国产| 久久伊人一区| 中文字幕欧美色图| 亚洲成人tv| 亚洲国产另类久久精品| 男人揉女人奶房视频60分| 在线观看免费版| 高清不卡一区二区在线| 日本老师69xxx| 国产喷水在线观看| 久久aimee| 欧美乱熟臀69xxxxxx| 无码粉嫩虎白一线天在线观看| 激情小视频在线| 激情久久五月天| 久久久影视精品| 国产传媒视频在线 | 国产精品日韩在线播放| 超碰在线国产97| 你懂的视频欧美| 日韩一区二区不卡| 在线视频日韩一区 | jizz大全欧美jizzcom| 视频在线观看入口黄最新永久免费国产 | 欧美日韩精品一区二区视频| 日韩欧美亚洲另类制服综合在线| 国产精品免费观看久久| www.综合网.com| 亚洲欧美日韩系列| 日韩在线电影一区| 日本一区高清| 成人精品高清在线| 91aaaa| 中文字幕日日夜夜| 欧美专区在线| 欧美激情综合亚洲一二区| 狂野欧美性猛交| 久久97视频| 日韩成人在线网站| 日本wwwwwww| 欧美激情不卡| 色哟哟欧美精品| 香港三级韩国三级日本三级| 中文字幕伦理免费在线视频| 中文字幕一区二区三区不卡| 五月天亚洲综合| 男同在线观看| 久久久久久久久岛国免费| 国产三级精品在线不卡| 亚洲av少妇一区二区在线观看| 男人的j进女人的j一区| 国产精品成av人在线视午夜片| 久久久久久久99| 一区福利视频| 欧美激情一区二区三区成人| 欧美三级免费看| 欧美在线黄色| 欧美黄色www| 青娱乐国产精品| 午夜精品av| 欧美黑人xxxⅹ高潮交| 午夜精品一区二区三区视频| 国产精品99在线观看| 深夜成人在线观看| 中国一级片在线观看| 亚洲网色网站| 欧美激情亚洲自拍| 亚洲欧美在线视频免费| 亚洲欧美日本国产专区一区| 91av视频在线免费观看| 18精品爽视频在线观看| 在线日韩电影| 热久久视久久精品18亚洲精品| 69国产精品视频免费观看| 青青青伊人色综合久久| 国产日韩精品在线观看| av中文在线观看| 成人午夜又粗又硬又大| 国产自产精品| 91网在线播放| 一个色在线综合| 日韩av三级在线| 123成人网| 欧美一区二区在线播放| 亚洲一级Av无码毛片久久精品| 欧美午夜18电影| 亚洲午夜未满十八勿入免费观看全集| 亚洲激情图片网| 欧美日韩综合| 日本精品视频在线播放| 亚洲一线在线观看| 不卡欧美aaaaa| 日韩国产精品一区二区三区| 成人看片免费| 欧美日韩中文字幕| 亚洲精品午夜在线观看| 伊人久久大香线蕉av超碰| 亚洲天堂av在线免费观看| 成年人免费视频播放| 激情亚洲成人| 国产精品自产拍在线观看| 亚洲精选一区二区三区| 久久免费偷拍视频| 久久www视频| 日韩电影免费观| 日韩视频免费观看高清在线视频| 亚洲欧美在线不卡| 日韩精品免费一区二区三区| 欧美精品第一页在线播放| 久久久黄色大片| 激情综合亚洲精品| 日本一区二区精品| 波多野结衣乳巨码无在线观看| 在线视频中文字幕一区二区| 波多野吉衣在线视频| 欧美限制电影| 91国在线精品国内播放| 999久久久久久| 国产视频亚洲色图| 福利视频一区二区三区四区| 日韩欧美激情| 国产亚洲精品久久久优势| 久久精品国产亚洲av高清色欲| 日韩精品一二区| 国产日韩一区二区| 日韩经典av| 欧美精品久久一区二区三区| 久久亚洲无码视频| 亚洲综合国产| 国模一区二区三区私拍视频| 2024短剧网剧在线观看| 欧美日韩免费一区二区三区| 精品人妻无码一区二区三区| 亚洲国产三级| 国产精品99久久久久久久| 国产一二区在线观看| 欧美日韩你懂的| 少妇av片在线观看| 久久久久久网| 欧美日韩精品综合| 日本在线高清| 精品亚洲精品福利线在观看| 国产视频91在线| av在线这里只有精品| 大西瓜av在线| 99re8这里有精品热视频免费| 美女性感视频久久久| 国产乱叫456在线| 中文字幕一区二区三区不卡 | 日韩在线电影一区| 人人鲁人人莫人人爱精品| 精品呦交小u女在线| 波多野结衣国产| 91麻豆产精品久久久久久| 国产综合av在线| 亚洲第一福利专区| 国产精品jvid在线观看蜜臀| 国产资源在线播放| 亚洲色图88| 日本精品一区二区三区高清| 秘密基地免费观看完整版中文 | 国产精品va在线观看无码| 天堂久久一区| 久久综合九色九九 | 亚洲黄在线观看| 国产精品老女人| 久久久夜色精品亚洲| 日韩视频在线免费看| 成人嘿咻视频免费看| 国产美女搞久久| 国产不卡在线| 欧美不卡一区二区| 欧美一二三区视频| 国产视频一区二区在线| www.99r| 欧美一区综合| 久久超碰亚洲| 九七电影院97理论片久久tvb| 中文字幕av一区| 国产日韩一级片| 亚洲成a人v欧美综合天堂| 黄色工厂在线观看| 老司机免费视频一区二区三区| 中国一级黄色录像| 国产精品极品在线观看| 人人做人人澡人人爽欧美| h视频在线观看免费| 欧美丰满嫩嫩电影| 国产精品成人国产乱| 国产情人综合久久777777| 精品亚洲视频在线| 日韩视频不卡| 亚洲砖区区免费| 成人台湾亚洲精品一区二区 | 黄色av一级片| 日韩一区中文字幕| 大地资源二中文在线影视观看| 日本欧美大码aⅴ在线播放| 在线观看日韩片| 老司机精品在线| 成人激情视频网| 成人免费观看在线观看| 深夜精品寂寞黄网站在线观看| 亚洲av无码片一区二区三区 | 亚洲精品推荐| 18成人在线| 婷婷午夜社区一区| 欧美精品九九久久| 日本精品在线| 日韩久久精品成人| 性做久久久久久久久久| 欧洲一区二区三区在线| 动漫精品一区一码二码三码四码| 欧美国产精品中文字幕| xxxx黄色片| 黄页视频在线91| 国产日韩一区二区在线观看| 欧美另类亚洲| 这里只有精品66| 九九精品久久| 国产精品一区在线播放| 国产精品免费精品自在线观看 | 久久久久在线视频| 亚洲图片欧美色图| 中文字幕五月天| 国产欧美日韩在线观看| 添女人荫蒂视频| 成人av动漫在线| 丰满饥渴老女人hd| 精品一区二区影视| 爱情岛论坛亚洲首页入口章节| 日韩午夜在线| 成人在线视频一区二区三区| 天天久久综合| 一本色道久久综合亚洲精品婷婷 | 日韩精品小视频| 亚洲黄色在线播放| 欧美一区在线视频| 国产强被迫伦姧在线观看无码| 欧美日韩专区在线| 国产女优在线播放| 在线免费av一区| 国产午夜无码视频在线观看 | 国产精品无码av在线播放| 亚洲视频中文| 欧美精品卡一卡二| 欧美午夜一区二区福利视频| 女女百合国产免费网站| 中国成人一区| 日韩在线视频在线| 国产一区二区中文| 免费看毛片的网址| 亚洲经典在线| 免费国产黄色网址| 亚洲伊人观看| 日韩中文字幕组| 日韩福利视频网| 国产福利影院在线观看| 蜜桃av一区二区三区| 青青草原国产在线视频| 狠狠色丁香婷婷综合久久片| 亚洲人视频在线| 国产精品一二三四五| 免费观看黄网站| 成人av在线影院| 中文字幕狠狠干| 欧美激情一区二区三区蜜桃视频| 成人性生交大片免费看无遮挡aⅴ| 中文字幕精品一区二区精品绿巨人 | 在线丨暗呦小u女国产精品| 91caoporn在线| 超碰精品一区二区三区乱码| 色呦呦在线免费观看| 国模叶桐国产精品一区| videos性欧美另类高清| 国产精品久久久久久久app| 国产午夜久久av| 国产一区二区高清不卡| 国产一区二区三区四区| 伊人久久大香线蕉成人综合网| 欧美在线精品一区| 乱妇乱女熟妇熟女网站| 蜜桃av一区二区在线观看| 免费黄视频在线观看| 99re视频精品| 午夜国产福利视频| 亚洲成人免费在线| 国产精品成人久久久| 日韩一区二区高清| 久青青在线观看视频国产| 最近2019免费中文字幕视频三| 在线观看h网| 欧美一级bbbbb性bbbb喷潮片| 九九久久国产| 久久久久久国产精品mv| 欧美激情成人| 少妇人妻大乳在线视频| 美女网站色91| 国产老熟女伦老熟妇露脸| 国产精品理伦片| 91av在线免费视频| 欧美一级高清大全免费观看| 亚洲av成人无码网天堂| 精品久久国产精品| 精品三级久久| 亚洲一区二区免费在线| 久久综合亚洲| 丁香六月激情婷婷| 久久国产成人午夜av影院| 亚洲av无码一区二区三区观看| 亚洲国产高清在线观看视频| 国产中文字字幕乱码无限| 欧美日韩国产免费| 日本福利片高清在线观看| 久久91亚洲人成电影网站| 美女色狠狠久久| 久久偷看各类wc女厕嘘嘘偷窃 | 性高湖久久久久久久久aaaaa| 日本v片在线高清不卡在线观看| bl动漫在线观看| 亚洲精品v日韩精品| 在线视频你懂得| 亚洲视频日韩精品| 男人av在线播放| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 久无码久无码av无码| 久久99精品国产麻豆婷婷| www.黄色在线| 日韩欧美在线第一页| 刘亦菲毛片一区二区三区| 久久精品久久久久久国产 免费| 国精产品一区一区三区四川| 精品视频一区二区| 亚洲高清在线| 少妇熟女视频一区二区三区 | 中文字幕の友人北条麻妃| 麻豆国产精品官网| 谁有免费的黄色网址| 日韩欧美一区二区三区久久| 日本天堂影院在线视频| 国语自产精品视频在线看| 91蜜桃臀久久一区二区| 蜜臀av性久久久久蜜臀av| 韩国成人在线视频| 天天色影综合网| 欧美精品三级日韩久久| 国产激情在线| 亚洲va欧美va在线观看| 午夜精品毛片| 91免费视频污| 一区二区三区免费网站| 99热这里只有精品99| 久久精品久久久久久国产 免费| 成人豆花视频| 日本丰满大乳奶| 国产精品18久久久久久vr| 精品国产欧美日韩不卡在线观看| 91麻豆精品国产自产在线观看一区 | 大陆av在线播放| 99久久精品免费| 91video| 在线视频国产日韩| 四虎视频在线精品免费网址| 香蕉视频免费版| thepron国产精品| 国产免费av一区| 中文字幕成人精品久久不卡| 日本成人在线网站| 成人在线免费高清视频| 成人免费视频一区| 精品久久久久久久久久久久久久久久| 亚洲欧洲日产国产网站| 成人在线观看免费播放| 一级黄色录像免费看| 国产成人午夜精品5599| 国产一级18片视频| 国产一区二区三区在线免费观看| 色综合一区二区日本韩国亚洲| 老司机午夜网站| 97久久人人超碰| 真实的国产乱xxxx在线91| 久久激情视频久久| 精品欧美午夜寂寞影院| 手机看片福利盒子久久| 亚洲视频免费在线| 色婷婷视频在线| 国产精品热视频| 国产精品v日韩精品v欧美精品网站| 日本少妇毛茸茸| 欧美老女人第四色| 99热99re6国产在线播放| 日本一区二区三区免费看| 激情综合五月天| 综合激情网五月| 久久精品一偷一偷国产| 日韩mv欧美mv国产网站| 手机免费av片| 一本一本大道香蕉久在线精品|