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

Android游戲引擎libgdx使用教程5:常用UI類與舞臺

移動開發 Android
像按鈕、下拉框、列表、標簽、圖片、復選框、編輯框、分割面板、滑動面板、滑動條等都是比較常用的UI類,它們都屬于Actor,可以很方便的納入到舞臺的管理中,而且都包含在com.badlogic.gdx.scenes.scene2d.ui包中。

像按鈕、下拉框、列表、標簽、圖片、復選框、編輯框、分割面板、滑動面板、滑動條等都是比較常用的UI類,它們都屬于Actor,可以很方便的納入到舞臺的管理中,而且都包含在com.badlogic.gdx.scenes.scene2d.ui包中,

其實仔細看看UI類的實現代碼不難發現其實它們都是大部分繼承自Widget或者Table,如果需要自定義UI可以繼承以上兩個類(它們繼承自Actor),這里要說明一下libgdx的布局部分使用了TWL,有興趣的朋友可以去看看。

在介紹每個控件之前我們先來看一下NinePatch,這是最近的一個比較重大的更新。

何為NinePatch?其實android原生即有NinePatch類,常在按鈕中使用。

Android游戲引擎libgdx使用教程5:常用UI類與舞臺

如圖,將圖片分成九份。中間部分可以根據需要擴大,使按鈕的大小內容變動不受圖片的限制。

而在libgdx的NinePatch其實就是九個TextureRegion對象。

常用的實例化方法有兩個:

public NinePatch (Texture texture, int left, int right, int top, int bottom)

public NinePatch (TextureRegion region, int left, int right, int top, int bottom)

關于其中的四個int型參數如何取值我們可以參考一下源碼:

  1. public NinePatch (TextureRegion region, int left, int right, int top, int bottom) {     
  2. int middleWidth = region.getRegionWidth() - left - right;     
  3. int middleHeight = region.getRegionHeight() - top - bottom;     
  4. this.patches = new TextureRegion[] {new TextureRegion(region, 00, left, top),     
  5. new TextureRegion(region, left, 0, middleWidth, top), new TextureRegion(region, left + middleWidth, 0, right, top),     
  6. new TextureRegion(region, 0, top, left, middleHeight), new TextureRegion(region, left, top, middleWidth, middleHeight),     
  7. new TextureRegion(region, left + middleWidth, top, right, middleHeight),     
  8. new TextureRegion(region, 0, top + middleHeight, left, bottom),     
  9. new TextureRegion(region, left, top + middleHeight, middleWidth, bottom),     
  10. new TextureRegion(region, left + middleWidth, top + middleHeight, right, bottom)};     
  11. }   

先計算中間部分的寬度和高度。然后開始切圖,首先取頂部的最左邊的那個,即圖中編號1的那塊,然后去它右邊的,然后再右邊的。

取完最上邊的那行,然后取中間的那行,然后取最后一行的。

由上自下,由左自右。

而在繪制時又是如何處理的呢?看源碼:

  1. public void draw (SpriteBatch batch, float x, float y, float width, float height) {     
  2. float centerColumnX = x;     
  3. if (patches[BOTTOM_LEFT] != null)     
  4. centerColumnX += patches[BOTTOM_LEFT].getRegionWidth();     
  5. else if (patches[MIDDLE_LEFT] != null)     
  6. centerColumnX += patches[MIDDLE_LEFT].getRegionWidth();     
  7. else if (patches[TOP_LEFT] != null//     
  8. centerColumnX += patches[TOP_LEFT].getRegionWidth();     
  9. float rightColumnX = x + width;     
  10. if (patches[BOTTOM_RIGHT] != null)     
  11. rightColumnX -= patches[BOTTOM_RIGHT].getRegionWidth();     
  12. else if (patches[MIDDLE_RIGHT] != null)     
  13. rightColumnX += patches[MIDDLE_RIGHT].getRegionWidth();     
  14. else if (patches[TOP_RIGHT] != null//     
  15. rightColumnX += patches[TOP_RIGHT].getRegionWidth();     
  16. float middleRowY = y;     
  17. if (patches[TOP_LEFT] != null)     
  18. middleRowY += patches[TOP_LEFT].getRegionHeight();     
  19. else if (patches[TOP_CENTER] != null)     
  20. middleRowY += patches[TOP_CENTER].getRegionHeight();     
  21. else if (patches[TOP_RIGHT] != null//     
  22. middleRowY += patches[TOP_RIGHT].getRegionHeight();     
  23. float topRowY = y + height;     
  24. if (patches[TOP_LEFT] != null)     
  25. topRowY -= patches[TOP_LEFT].getRegionHeight();     
  26. else if (patches[TOP_CENTER] != null)     
  27. topRowY -= patches[TOP_CENTER].getRegionHeight();     
  28. else if (patches[TOP_RIGHT] != null//     
  29. topRowY -= patches[TOP_RIGHT].getRegionHeight();     
  30. // Bottom row     
  31. if (patches[BOTTOM_LEFT] != null) batch.draw(patches[BOTTOM_LEFT], x, y, centerColumnX - x, middleRowY - y);     
  32. if (patches[BOTTOM_CENTER] != null)     
  33. batch.draw(patches[BOTTOM_CENTER], centerColumnX, y, rightColumnX - centerColumnX, middleRowY - y);     
  34. if (patches[BOTTOM_RIGHT] != null)     
  35. batch.draw(patches[BOTTOM_RIGHT], rightColumnX, y, x + width - rightColumnX, middleRowY - y);     
  36. // Middle row     
  37. if (patches[MIDDLE_LEFT] != null) batch.draw(patches[MIDDLE_LEFT], x, middleRowY, centerColumnX - x, topRowY - middleRowY);     
  38. if (patches[MIDDLE_CENTER] != null)     
  39. batch.draw(patches[MIDDLE_CENTER], centerColumnX, middleRowY, rightColumnX - centerColumnX, topRowY - middleRowY);     
  40. if (patches[MIDDLE_RIGHT] != null)     
  41. batch.draw(patches[MIDDLE_RIGHT], rightColumnX, middleRowY, x + width - rightColumnX, topRowY - middleRowY);     
  42. // Top row     
  43. if (patches[TOP_LEFT] != null) batch.draw(patches[TOP_LEFT], x, topRowY, centerColumnX - x, y + height - topRowY);     
  44. if (patches[TOP_CENTER] != null)     
  45. batch.draw(patches[TOP_CENTER], centerColumnX, topRowY, rightColumnX - centerColumnX, y + height - topRowY);     
  46. if (patches[TOP_RIGHT] != null)     
  47. batch.draw(patches[TOP_RIGHT], rightColumnX, topRowY, x + width - rightColumnX, y + height - topRowY);     
  48. }   

先計算左右欄的寬度,在計算中間和頂部的高度。然后從下自上的繪制。說實話我覺得這段代碼看著很好玩的。

現在來說說幾個常用的控件的使用吧。先構建一個舞臺。

先來試試Label吧,label是有緩存的,所以替換顯示內容不是用setText方法,而是使用setWrappedText方法。

代碼如下:

  1. package com.cnblogs.htynkn.listener;     
  2. import com.badlogic.gdx.ApplicationListener;     
  3. import com.badlogic.gdx.Gdx;     
  4. import com.badlogic.gdx.graphics.GL10;     
  5. import com.badlogic.gdx.graphics.g2d.BitmapFont;     
  6. import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;     
  7. import com.badlogic.gdx.scenes.scene2d.Stage;     
  8. import com.badlogic.gdx.scenes.scene2d.actors.Label;     
  9. public class FirstGame implements ApplicationListener {     
  10. private Stage stage;     
  11. Label label;     
  12. @Override     
  13. public void create() {     
  14. stage = new Stage(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(),     
  15. true);     
  16. label = new Label("fpsLabel"new BitmapFont(Gdx.files.internal("cf.fnt"),Gdx.files.internal("cf.png"),false), "label1");     
  17. label.x=5;     
  18. label.y=Gdx.graphics.getHeight()-label.height-5;     
  19. stage.addActor(label);     
  20. Gdx.input.setInputProcessor(stage);     
  21. }     
  22. @Override     
  23. public void dispose() {     
  24. stage.dispose();     
  25. }     
  26. @Override     
  27. public void pause() {     
  28. // TODO Auto-generated method stub     
  29. }     
  30. @Override     
  31. public void render() {     
  32. Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);     
  33. label.setWrappedText("FPS: "+Gdx.graphics.getFramesPerSecond(),     
  34. HAlignment.CENTER);     
  35. stage.act(Gdx.graphics.getDeltaTime());     
  36. stage.draw();     
  37. }     
  38. @Override     
  39. public void resize(int width, int height) {     
  40. // TODO Auto-generated method stub     
  41. }     
  42. @Override     
  43. public void resume() {     
  44. // TODO Auto-generated method stub     
  45. }     
  46. }   

效果:

Android游戲引擎libgdx使用教程5:常用UI類與舞臺

然后再看看Button吧,實例化需要一個ButtonStyle,定義了按鈕三種狀態對應的圖片樣式,按下和松開時的X,Y偏移還有Button中文字繪制所需的BitmapFont和Color。

按鈕的三種狀態的圖片我就省了,只用一張圖片。

Android游戲引擎libgdx使用教程5:常用UI類與舞臺

修改代碼如下:

  1. package com.cnblogs.htynkn.listener;     
  2. import com.badlogic.gdx.ApplicationListener;     
  3. import com.badlogic.gdx.Gdx;     
  4. import com.badlogic.gdx.graphics.Color;     
  5. import com.badlogic.gdx.graphics.GL10;     
  6. import com.badlogic.gdx.graphics.Texture;     
  7. import com.badlogic.gdx.graphics.g2d.BitmapFont;     
  8. import com.badlogic.gdx.graphics.g2d.NinePatch;     
  9. import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;     
  10. import com.badlogic.gdx.scenes.scene2d.Stage;     
  11. import com.badlogic.gdx.scenes.scene2d.actors.Label;     
  12. import com.badlogic.gdx.scenes.scene2d.ui.Button;     
  13. import com.badlogic.gdx.scenes.scene2d.ui.Button.ButtonStyle;     
  14. public class FirstGame implements ApplicationListener {     
  15. private Stage stage;     
  16. Label label;     
  17. Texture texture;     
  18. Button button;     
  19. @Override     
  20. public void create() {     
  21. stage = new Stage(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(),     
  22. true);     
  23. texture = new Texture(Gdx.files.internal("06.png"));     
  24. NinePatch n1 = new NinePatch(texture, 7799);     
  25. BitmapFont bitmapFont = new BitmapFont(Gdx.files.internal("cf.fnt"),     
  26. Gdx.files.internal("cf.png"), false);     
  27. label = new Label("fpsLabel", bitmapFont, "label1");     
  28. label.x = 5;     
  29. label.y = Gdx.graphics.getHeight() - label.height - 5;     
  30. stage.addActor(label);     
  31. button = new Button("button"new ButtonStyle(n1, n1, n1, 0f, 0f, 0f,     
  32. 0f, bitmapFont, new Color(1100.5f)), "button");     
  33. button.x=10;     
  34. button.y=10;     
  35. button.width=100f;     
  36. button.height=32f;     
  37. stage.addActor(button);     
  38. Gdx.input.setInputProcessor(stage);     
  39. }     
  40. @Override     
  41. public void dispose() {     
  42. stage.dispose();     
  43. }     
  44. @Override     
  45. public void pause() {     
  46. // TODO Auto-generated method stub     
  47. }     
  48. @Override     
  49. public void render() {     
  50. Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);     
  51. label.setWrappedText("FPS: " + Gdx.graphics.getFramesPerSecond(),     
  52. HAlignment.CENTER);     
  53. stage.act(Gdx.graphics.getDeltaTime());     
  54. stage.draw();     
  55. }     
  56. @Override     
  57. public void resize(int width, int height) {     
  58. // TODO Auto-generated method stub     
  59. }     
  60. @Override     
  61. public void resume() {     
  62. // TODO Auto-generated method stub     
  63. }     
  64. }   

效果:

Android游戲引擎libgdx使用教程5:常用UI類與舞臺

按鈕自然應該有點擊事件,通過setClickListener來設置:

  1. button.setClickListener(new ClickListener() {     
  2. @Override     
  3. public void click(Actor actor) {     
  4. Gdx.app.log("Info""點擊事件觸發了");     
  5. }     
  6. });   

然后再看看CheckBox。CheckBox的樣式定義在CheckBoxStyle中,需要4個參數,兩種狀態的各一張圖片,一個BitmapFont和Color。

這里我再添加一張圖片:

Android游戲引擎libgdx使用教程5:常用UI類與舞臺

原理差不多,直接貼代碼了。

  1. package com.cnblogs.htynkn.listener;     
  2. import android.graphics.Paint.Align;     
  3. import com.badlogic.gdx.ApplicationListener;     
  4. import com.badlogic.gdx.Gdx;     
  5. import com.badlogic.gdx.graphics.Color;     
  6. import com.badlogic.gdx.graphics.GL10;     
  7. import com.badlogic.gdx.graphics.Texture;     
  8. import com.badlogic.gdx.graphics.g2d.BitmapFont;     
  9. import com.badlogic.gdx.graphics.g2d.NinePatch;     
  10. import com.badlogic.gdx.graphics.g2d.TextureRegion;     
  11. import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;     
  12. import com.badlogic.gdx.scenes.scene2d.Actor;     
  13. import com.badlogic.gdx.scenes.scene2d.Stage;     
  14. import com.badlogic.gdx.scenes.scene2d.actors.Label;     
  15. import com.badlogic.gdx.scenes.scene2d.ui.Button;     
  16. import com.badlogic.gdx.scenes.scene2d.ui.CheckBox;     
  17. import com.badlogic.gdx.scenes.scene2d.ui.ClickListener;     
  18. import com.badlogic.gdx.scenes.scene2d.ui.Button.ButtonStyle;     
  19. import com.badlogic.gdx.scenes.scene2d.ui.CheckBox.CheckBoxStyle;     
  20. public class FirstGame implements ApplicationListener {     
  21. private Stage stage;     
  22. Label label;     
  23. Texture texture1;     
  24. Texture texture2;     
  25. CheckBox checkBox;     
  26. @Override     
  27. public void create() {     
  28. stage = new Stage(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(),     
  29. true);     
  30. texture1 = new Texture(Gdx.files.internal("06.png"));     
  31. texture2 = new Texture(Gdx.files.internal("07.png"));     
  32. NinePatch n1 = new NinePatch(texture1, 7799);     
  33. BitmapFont bitmapFont = new BitmapFont(Gdx.files.internal("cf.fnt"),     
  34. Gdx.files.internal("cf.png"), false);     
  35. label = new Label("fpsLabel", bitmapFont, "label1");     
  36. label.x = 5;     
  37. label.y = Gdx.graphics.getHeight() - label.height - 5;     
  38. CheckBoxStyle style = new CheckBoxStyle(new TextureRegion(texture1),     
  39. new TextureRegion(texture2), bitmapFont, new Color(111,     
  40. 0.5f));     
  41. checkBox = new CheckBox("checkbox", style, "checkbox");     
  42. checkBox.x = 100;     
  43. checkBox.y = 100;     
  44. checkBox.width = 158f;     
  45. checkBox.height = 32f;     
  46. checkBox.setText("Yes");     
  47. checkBox.setClickListener(new ClickListener() {     
  48. @Override     
  49. public void click(Actor actor) {     
  50. if (checkBox.isChecked) {     
  51. checkBox.setText("Yes");     
  52. else {     
  53. checkBox.setText("NO");     
  54. }     
  55. }     
  56. });     
  57. stage.addActor(checkBox);     
  58. stage.addActor(label);     
  59. Gdx.input.setInputProcessor(stage);     
  60. }     
  61. @Override     
  62. public void dispose() {     
  63. stage.dispose();     
  64. }     
  65. @Override     
  66. public void pause() {     
  67. // TODO Auto-generated method stub     
  68. }     
  69. @Override     
  70. public void render() {     
  71. Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);     
  72. label.setWrappedText("FPS: " + Gdx.graphics.getFramesPerSecond(),     
  73. HAlignment.CENTER);     
  74. stage.act(Gdx.graphics.getDeltaTime());     
  75. stage.draw();     
  76. }     
  77. @Override     
  78. public void resize(int width, int height) {     
  79. // TODO Auto-generated method stub     
  80. }     
  81. @Override     
  82. public void resume() {     
  83. // TODO Auto-generated method stub     
  84. }     
  85. }   

效果:

Android游戲引擎libgdx使用教程5:常用UI類與舞臺

Android游戲引擎libgdx使用教程5:常用UI類與舞臺

其他的UI大致用法差不多,顯示的樣式在對應的Style或者Skin中定義。但是要注意有些UI類需要手動設置width和height,不然有些顯示會很奇怪的。

最后說一下Slider的用法

SliderStyle需要一個NinePath和Texture,我最初沒有想通為什么不是兩個NinePath,仔細看一下源碼才了解到,NinePath是作為背景,而Texture那個是中間的那個滑動的方塊。

關于用配置文件設置Style的問題,google code的wiki上似乎沒有寫,但是在libgdx的論壇里面有,比如:

  1. somePatch1: [    
  2. { height: 13, width: 9, x: 761, y: 78 },    
  3. { height: 13, width: 1, x: 770, y: 78 },    
  4. { height: 13, width: 9, x: 771, y: 78 },    
  5. { height: 1, width: 9, x: 761, y: 91 },    
  6. { height: 1, width: 1, x: 770, y: 91 },    
  7. { height: 1, width: 9, x: 771, y: 91 },    
  8. { height: 13, width: 9, x: 761, y: 92 },    
  9. { height: 13, width: 1, x: 770, y: 92 },    
  10. { height: 13, width: 9, x: 771, y: 92 }    
  11. ]   

或者

  1. somePatch2: [    
  2. { height: 13, width: 9, x: 761, y: 78 },    
  3. ]  
責任編輯:閆佳明 來源: jizhuomi
相關推薦

2013-12-06 10:31:14

Android游戲引擎libgdx教程

2013-12-04 16:28:29

Android游戲引擎libgdx教程

2013-12-04 13:30:45

Android游戲引擎libgdx教程

2013-12-04 17:27:10

Android游戲引擎libgdx教程

2013-12-06 10:35:28

Android游戲引擎libgdx教程

2013-12-06 09:59:53

Android游戲引擎libgdx教程

2013-12-04 16:21:02

Android游戲引擎libgdx教程

2013-12-06 10:12:49

Android游戲引擎libgdx教程

2013-12-06 10:22:42

Android游戲引擎libgdx教程

2013-12-04 16:07:27

Android游戲引擎libgdx教程

2011-07-18 11:39:58

iPhone 游戲 引擎

2011-07-18 10:53:09

2011-07-18 11:07:12

iPhone 游戲 引擎

2011-07-18 12:29:10

2011-07-18 11:23:29

iPhone 游戲 動畫

2014-06-03 09:35:19

Javalibgdx

2015-07-08 16:38:10

Cocos游戲引擎

2014-07-15 10:34:14

Android游戲引擎

2012-03-06 10:56:32

HTML 5

2013-05-20 17:04:09

點贊
收藏

51CTO技術棧公眾號

精品人妻一区二区三区蜜桃视频| 91精品国产毛片武则天| 日本黄色中文字幕| 久久一区二区中文字幕| 日韩一区二区三区视频| 老太脱裤让老头玩ⅹxxxx| 欧美zozo| 国产精品一区2区| 91av在线免费观看| 蜜桃av.com| 精品资源在线| 欧美美女bb生活片| 97国产精东麻豆人妻电影 | 擼擼色在线看观看免费| 久久久www成人免费无遮挡大片| 91精品国产综合久久久久久久久| 日韩精品国产一区二区| 欧美第一精品| 精品网站999www| 中文字幕第66页| 日韩国产激情| 亚洲国产精品综合小说图片区| 色噜噜一区二区| 黄色一级大片在线免费看国产一 | 亚洲成在人线免费| 三年中文高清在线观看第6集| 天堂91在线| 国产成人精品一区二区三区网站观看| 日本中文字幕久久看| 久久国产精品波多野结衣av| 91综合在线| 在线观看亚洲区| 日韩网站在线播放| 国产精品2023| 日韩精品在线网站| 91丨九色丨蝌蚪| 日韩pacopacomama| 欧美日韩免费网站| 搞av.com| 国产美女情趣调教h一区二区| 中文字幕一区二| 亚洲精品在线观看免费| 川上优的av在线一区二区| 91在线看国产| 久久精品人人做人人爽电影| 刘亦菲久久免费一区二区| 国产精品亚洲一区二区三区在线 | 国产成人精品一区二区无码呦| 免费的国产精品| 国产精品ⅴa在线观看h| 国产视频1区2区| 麻豆91精品| 热re91久久精品国99热蜜臀| 中文字幕日韩一级| 99精品免费网| 欧美一区深夜视频| 五月天婷婷激情| 国产视频一区免费看| 97久久超碰福利国产精品…| 久久精品欧美一区二区| 黄色成人精品网站| 欧美激情一区二区三级高清视频| 久久久久久福利| 亚洲第一伊人| 欧美亚洲伦理www| 一二三区免费视频| 免费视频一区二区| 成人激情视频在线观看| a级片在线免费看| 国产老妇另类xxxxx| 91亚洲精品丁香在线观看| av官网在线观看| 豆国产96在线|亚洲| 99re视频在线| 视频在线不卡| 欧美激情一区二区在线| 自拍亚洲欧美老师丝袜| 中中文字幕av在线| 亚洲国产视频一区| 草草久久久无码国产专区| 久久91导航| 欧美美女一区二区| 少妇搡bbbb搡bbb搡打电话| 日韩美脚连裤袜丝袜在线| 一色桃子一区二区| 欧美做爰爽爽爽爽爽爽| 在线日韩视频| 国产精品va在线播放| 国产精品久久久久久久久久久久久久久久 | 在线免费观看日韩视频| 顶级嫩模精品视频在线看| 久久精品aaaaaa毛片| 国产毛片av在线| 亚洲免费观看高清在线观看| 成年人午夜视频在线观看| 另类中文字幕国产精品| 欧美成人免费网站| 一级片视频免费看| 欧美色一级片| 国产精品久久久精品| www.av导航| 国产日产欧美精品一区二区三区| 四虎4hu永久免费入口| 瑟瑟视频在线看| 7777精品伊人久久久大香线蕉| 污污免费在线观看| 亚洲mv大片欧洲mv大片| 日韩av电影在线播放| 99精品免费观看| 久久久精品国产免大香伊| 亚洲一区 在线播放| 三上悠亚国产精品一区二区三区| 欧美一区二区日韩| 在线观看国产精品一区| 在线观看的日韩av| 91久久国产精品| 免费在线视频一级不卡| 一区二区三区.www| 青青草久久伊人| 国产毛片一区二区三区 | 一区二区在线观看网站| 僵尸再翻生在线观看| 这里只有精品电影| 欧美一区二区三区粗大| 亚洲免费影院| 国产经品一区二区| 哥也色在线视频| 欧美日韩激情一区二区| 老牛影视av老牛影视av| 日韩图片一区| 国产九区一区在线| 啪啪免费视频一区| 日韩一级黄色片| 国产精品精品软件男同| 蜜臀av性久久久久蜜臀av麻豆 | www.欧美com| 91tv精品福利国产在线观看| 国产精品久久久久久婷婷天堂| 午夜小视频免费| 亚洲国产aⅴ天堂久久| 佐山爱在线视频| 亚洲精品2区| 92国产精品久久久久首页| 欧美一区二区三区在线观看免费| 欧美主播一区二区三区| 91精品人妻一区二区三区| 新狼窝色av性久久久久久| 九九九九九九精品| 在线观看特色大片免费视频| 日韩高清a**址| 日本午夜视频在线观看| 91在线观看地址| 亚洲成熟丰满熟妇高潮xxxxx| 亚洲精品中文字幕99999| 555www成人网| 国产综合在线观看| 欧美日韩亚洲丝袜制服| 免费成人深夜蜜桃视频| 精品在线播放午夜| 欧美日韩dvd| 粉嫩av一区二区| 7m第一福利500精品视频| 深夜福利视频在线观看| 色香色香欲天天天影视综合网| 少妇真人直播免费视频| 麻豆精品国产传媒mv男同 | 日韩精品电影一区二区| 日本在线不卡视频| 综合色婷婷一区二区亚洲欧美国产| 国产一区二区三区黄网站| 欧美激情亚洲视频| 午夜小视频免费| 欧美四级电影在线观看| 欧美卡一卡二卡三| 99国产精品国产精品久久| 国产精品99久久免费黑人人妻| 精品视频免费在线观看| 91精品视频大全| bl在线肉h视频大尺度| 亚洲欧美激情一区| 国产精品久久久久毛片| 亚洲国产美女搞黄色| 国产免费看av| 国产一区二区三区四区在线观看| 国产情侣第一页| 奇米狠狠一区二区三区| 成人久久久久爱| www成人免费观看| 这里只有精品丝袜| 亚洲精品视频91| 91黄视频在线| 欧美黄色免费观看| 国产亚洲精品免费| 性一交一黄一片| 久久欧美肥婆一二区| 国产卡一卡二在线| 亚洲国产国产| 91在线播放视频| 在线观看精品| 久久久久一本一区二区青青蜜月 | 色婷婷av一区二区三区丝袜美腿| 国产精品视频999| 国产亚洲成av人片在线观看 | 精品人体无码一区二区三区| 国产91精品一区二区麻豆亚洲| 成人在线观看a| 黄色在线一区| 中文字幕一区综合| 女优一区二区三区| 成人欧美一区二区| 99久久这里有精品| 国产成人一区三区| 久草在线资源站手机版| 久久夜色精品国产| 2017亚洲天堂1024| 亚洲精品小视频| 亚洲国产999| 91精品综合久久久久久| 亚洲av无码乱码国产精品fc2| 亚洲国产视频在线| 日本中文字幕免费在线观看| 国产精品视频九色porn| 亚洲av综合一区二区| 99精品在线观看视频| 又黄又色的网站| 国产二区国产一区在线观看| 国内外成人免费在线视频| 日韩制服丝袜av| 中国丰满人妻videoshd| 亚洲激情二区| 超碰成人免费在线| 精品动漫一区| 人妻无码久久一区二区三区免费 | 美女精品视频一区| 免费成人黄色| 日韩视频免费在线| 成人欧美亚洲| 国产亚洲福利一区| 免费播放片a高清在线观看| 日韩激情在线视频| 亚州av在线播放| 日韩av在线资源| 天天干在线观看| 日韩av一区二区在线观看| 亚洲av成人无码久久精品老人 | 日本福利一区二区| 国产乱码在线观看| 欧美日韩国产另类一区| 在线观看亚洲国产| 91精品久久久久久久99蜜桃 | 亚洲欧美日韩国产yyy| 日韩精品二区| 婷婷视频在线播放| 亚洲一级淫片| 欧美高清中文字幕| 亚洲电影成人| 免费在线观看毛片网站| 麻豆国产一区二区| 特级西西444www| 岛国一区二区三区| 中文乱码人妻一区二区三区视频| 久久影院午夜论| 欧美人与性囗牲恔配| 国产精品国产三级国产普通话99| 粉嫩av性色av蜜臀av网站| 一区av在线播放| 久久露脸国语精品国产91| 欧美日韩中文字幕在线| 成人小视频在线播放| 欧美三级视频在线播放| 国产又粗又猛又爽又黄的| 日韩欧美国产系列| 天堂av电影在线观看| 最新中文字幕亚洲| 欧美6一10sex性hd| 日本欧美一级片| 疯狂欧洲av久久成人av电影| 国产精品夜夜夜一区二区三区尤| 免费成人网www| 51xx午夜影福利| 久久婷婷亚洲| 亚洲在线观看网站| 91麻豆精品在线观看| 懂色av粉嫩av蜜臀av一区二区三区| 亚洲一区免费在线观看| jizz国产在线观看| 欧美一区二区三区色| 天堂av在线播放| 米奇精品一区二区三区在线观看| 黄频免费在线观看| 国产欧美婷婷中文| 欧美三级午夜理伦三级在线观看 | 国产精品久久国产三级国电话系列| 性人久久久久| 天天爱天天做天天操| 99综合视频| 国产黑丝在线视频| 国产偷v国产偷v亚洲高清| 麻豆一区二区三区精品视频| 欧美制服丝袜第一页| 三级网站在线看| 久久亚洲成人精品| av免费在线一区| 久久精品99久久| 欧美成人tv| 亚洲综合日韩欧美| 91天堂素人约啪| www.色小姐com| 欧美日韩日本视频| 亚洲色图欧美视频| 欧美疯狂性受xxxxx另类| 另类一区二区| 天堂av一区二区| 国产精品嫩草99av在线| 国产成人精品综合久久久久99| 国产精品麻豆视频| 亚洲中文一区二区| 精品在线观看国产| av中文在线资源库| 99热国产免费| 一区二区国产在线| 中文字幕中文在线| 国产精品精品国产色婷婷| 精品国产一区二区三区四| 亚洲国产精品成人精品| 日本无删减在线| 92福利视频午夜1000合集在线观看| 成久久久网站| 丰满少妇在线观看| 久久久噜噜噜久久人人看 | 精品人体无码一区二区三区| 色88888久久久久久影院按摩| 午夜18视频在线观看| 国内精品久久久久久| 天堂久久av| 香蕉视频在线网址| 九色porny丨国产精品| 日韩在线视频免费看| 欧美精品一级二级| 免费a在线看| 亚洲在线视频观看| 中文字幕乱码亚洲无线精品一区| caoporm在线视频| 亚洲乱码国产乱码精品精98午夜| 国产精品久久久久久久久久久久久久久久久久 | 国产大尺度视频| 亚洲五码中文字幕| 韩国av永久免费| 国内免费久久久久久久久久久| 综合激情网...| 男人添女人下部高潮视频在观看| 99精品视频中文字幕| 无码人妻精品一区二区蜜桃色欲| 精品偷拍各种wc美女嘘嘘| 免费电影日韩网站| 亚洲精品高清视频| 国产精品77777| 亚洲视频免费播放| 亚洲欧洲日本专区| 福利一区和二区| 国产免费xxx| 成人午夜视频网站| 伊人手机在线视频| 伊人久久精品视频| 成人污版视频| 亚洲人成无码网站久久99热国产 | 九色综合狠狠综合久久| 日本a级片视频| 日韩激情视频在线播放| 久久99国产精品二区高清软件| 中文字幕一区二区三区四区五区人 | 国产高潮视频在线观看| 一本久久综合亚洲鲁鲁五月天| av免费在线一区二区三区| 91视频8mav| 国产日韩一区二区三区在线| 性少妇xx生活| 亚洲精品一区二区三区精华液| 日韩欧美看国产| 国产精品视频一二三四区| 91麻豆精东视频| 国产乱码一区二区| 97国产精品免费视频| 日韩精品久久| 国产极品一区二区| 欧美性一二三区| 成人av影院在线观看| 亚洲ai欧洲av| 成人av资源网站| 亚洲在线视频播放| 午夜美女久久久久爽久久| 日韩欧美精品综合| 加勒比精品视频| 欧美一区二区日韩| 国产一区二区三区影视| 欧美一级欧美一级| 亚洲欧洲精品一区二区精品久久久| 天堂网av2014| 成人有码在线视频| 久久蜜桃资源一区二区老牛|