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

主頁 > 知識庫 > Canvas在超級瑪麗游戲中的應用詳解

Canvas在超級瑪麗游戲中的應用詳解

熱門標簽:智能語音電銷機器人客戶端 高德地圖標注廁所 地圖標注沿海城市房價 中國地圖標注城市的 西安金倫外呼系統(tǒng) 江西ai電銷機器人如何 威海語音外呼系統(tǒng)平臺 地圖標注員工作內(nèi)容 通遼地圖標注app

前言

在上一篇文章中, 我們基于DOM體系構(gòu)建了超級瑪麗, 那么在本篇文章中我們使用canvas對整個架構(gòu)進行升級, 從而提升游戲的視覺體驗。 有需要的同學可以查看 源碼 學習.

線上體驗地址

考慮到有些同學對canvas不是很熟悉。本文將會對canvas的一些基礎做一些大致的講解。

canvas基礎知識

畫布元素

canvas標簽可以讓我們能夠使用JavaScript在網(wǎng)頁上繪制各種樣式的圖形。要訪問實際的繪圖接口, 首先我們需要創(chuàng)建一個上下文(context), 它是一個對象, 提供了繪圖的接口。目前有兩種廣受繪圖的樣式: 用于二維圖形的”2d“以及通過 OpenGL 接口的三維圖形的 webgl

比如, 我們可以使用 <canvas /> DOM元素上的 getContext 方法創(chuàng)建上下文。

 <body>
   <canvas width="500" height="500" />
 </body>
 <script>
   let canvas = document.querySelector('canvas');
   let context = canvas.getContext('2d');
   context.fillStyle = "yellow";
   context.fillRect(10, 10, 400, 400);
 </script>

我們繪制了一個寬度和高度都為400像素的黃色正方形, 并且其左上角頂點處的坐標為(10, 10)。canvas的坐標系(0, 0)在其左上角.

邊框的繪制

在畫布的接口中, fillRect 方法用于填充矩形。 fillStyle 用于控制填充形狀的方法。比如

單色

context.fillStyle = "yellow";

漸變色

let canvas = document.querySelector('canvas');
let context = canvas.getContext('2d');
let grd = context.createLinearGradient(0,0,170,0);
grd.addColorStop(0,"black");
grd.addColorStop(1,"red");
context.fillStyle = grd;
context.fillRect(10, 10, 400, 400);

pattern圖案對象

let canvas = document.querySelector('canvas');
let context = canvas.getContext('2d');
let img = document.createElement('img');
img.src = "https://dss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3112798566,2640650199&fm=26&gp=0.jpg";
img.onload = () => {
  let pattern = context.createPattern(img, 'no-repeat');
  context.fillStyle = pattern;
  context.fillRect(10,10,400,400)
}

strokeStyle屬性與fillStyle屬性類似, 但是 strokeStyle 作用與描邊線的顏色。線條的寬度由 lineWidth 屬性決定。

比如我想繪制一個邊框?qū)挾葹?的黃色正方形。

let canvas = document.querySelector('canvas');
let context = canvas.getContext('2d');
context.strokeStyle = "yellow";
context.lineWidth = 6;
context.strokeRect(10,10, 400, 400);

路徑

路徑是很多線條的組合。如果想要繪制各種各樣的形狀,我們會頻繁用到 moveTolineTo 兩個函數(shù)。

  let canvas = document.querySelector('canvas');
  let context = canvas.getContext('2d');
  context.beginPath();
  for (let index = 0; index < 400; index+=10) {
    context.moveTo(10, index);
    context.moveTo(index, 0);
    context.lineTo(390, index);
  }
  context.stroke();

moveTo 表示我們當前畫筆起點的位置, lineTo 表示我們畫筆從起點到終點的連線。以上代碼執(zhí)行后就是如下所示:

當然我們可以為線條繪制的圖形進行填充。

  let canvas = document.querySelector('canvas');
  let context = canvas.getContext('2d');
  context.beginPath();
  context.moveTo(50, 10);
  context.lineTo(10, 70);
  context.lineTo(90, 70);
  context.fill();
  context.closePath();

繪制圖片

在計算機圖形學中, 通常需要對矢量圖形和位圖圖形進行區(qū)分。 矢量圖形是指: 通過給出形狀的邏輯來描述指定的圖片。而位圖圖形是指使用像素數(shù)據(jù), 而不指定實際形狀。

canvas中的 drawImage 方法允許我們將像素數(shù)據(jù)繪制到畫布上。像素的數(shù)據(jù)可以來自于元素或者另外一個畫布。

drawImage支持傳遞9個參數(shù), 第2到5個參數(shù)表明源圖像中被復制的(x, y, 高度, 寬度), 第6到9個參數(shù)給出被復制的圖像在canvas畫布上的位置以及寬高。

下圖是瑪麗多個姿勢的匯總圖, 我們使用 drawImage 先讓他能夠正常跑起來。

let canvas = document.querySelector('canvas');
let ctx = canvas.getContext('2d');
let img = document.createElement('img');
img.src = './player_big.png'
let spriteW = 47, spriteH = 58;
img.onload = () => {
  let cycle = 0;
  setInterval(() => {
    ctx.clearRect(0, 0, spriteW, spriteH);
    ctx.drawImage(img,
     cycle*spriteW, 0, spriteW, spriteH,
     0, 0, spriteW, spriteH,
    );
    cycle = (cycle + 1) % 10;
  }, 120);
}

我們需要大致截取瑪麗的大小, 通過 cycle 鎖定瑪麗在動畫中的位置。在合成中, 我們只需要讓前面8個動作循環(huán)播放即可實現(xiàn)瑪麗的一個奔跑動作了。

控制轉(zhuǎn)換

現(xiàn)在我們已經(jīng)可以讓瑪麗朝著右邊跑了, 但是在實際的游戲中 瑪麗是可以左右跑的。這里的話 有兩個方案: 1. 我們再繪制一組朝著左邊跑的組合圖 2.控制畫布反過來繪制圖片。第一種方案比較簡單, 因此我們就選擇第二種比較復雜一點的方案。

canvas中可以調(diào)用scale方法按照比例尺調(diào)整然后繪制。此方法有兩個參數(shù), 第一個參數(shù)用于設置水平方向比例尺, 另外一個設置垂直方向的比例尺。

let canvas = document.querySelector('canvas');
let ctx = canvas.getContext('2d');
ctx.scale(3, .5);
ctx.beginPath();
ctx.arc(50, 50, 40, 0, 7);
ctx.lineWidth = 3;
ctx.stroke();

上面是對 scale 的簡單應用。我們調(diào)用了 scale 使得圓的水平方向被拉伸了3倍, 垂直方向被縮小了0.5倍。

如果scale中的參數(shù)為負數(shù)-1時, 在x位置為100的位置繪制的形狀最終會被繪制到-100的位置。因此為了轉(zhuǎn)化圖片, 我們不能僅僅在drawImage的之前調(diào)用 ctx.scale(-1, 1) , 因為在當前畫布中是看不到轉(zhuǎn)化后的圖片的。這里有兩種方案: 1. 調(diào)用 drawImage 的時候設置x為-50的時候來繪制圖形 2.通過調(diào)整坐標軸, 這種做法的好處在于我們編寫的繪圖不需要關(guān)心比例尺的變化。

我們采用 rotate 來渲染繪制的圖形, 并且通過 translate 方法移動他們。

  function flip(context, around) {
    context.translate(around, 0);
    context.scale(-1, 1);
    context.translate(-around, 0);
  }

我們的思路大概是這樣子:

如果我們在正x處繪制三角形, 默認情況下它會位于1位置。調(diào)用flip函數(shù)后首先進行右邊平移, 得到三角形2. 然后通過調(diào)用 scale 進行翻轉(zhuǎn)得到三角形3。最后再次通過調(diào)用 translate 方法, 對三角形3進行平移得到三角形4, 也就是最后我們想要的圖案。

  let canvas = document.querySelector('canvas');
  let ctx = canvas.getContext('2d');
  let img = document.createElement('img');
  img.src = './player_big.png'
  let spriteW = 47, spriteH = 58;
  img.onload = () => {
      ctx.clearRect(100, 0, spriteW, spriteH);
      flip(ctx, 100 + spriteW / 2);
      ctx.drawImage(img,
      0, 0, spriteW, spriteH,
      100, 0, spriteW, spriteH,
      );
  }

看, 他已經(jīng)被我們轉(zhuǎn)過來了!

升級超級瑪麗游戲

在上一篇文章中, 我們所有的元素都是直接通過DOM來顯示的, 那么在我們學完canvas之后, 我們可以使用drawImage來繪制元素。

我們定義CanvasDisplay替換掉之前的DOMDisplay, 除此之外, 我們新增了跟蹤自己視圖窗口, 他可以告訴我們當前正在那部分的關(guān)卡, 此外我還新增了 flipPlayer 屬性, 這樣即使瑪麗不動, 它仍然面對著它最后移動的方向。

var CanvasDisplay = class CanvasDisplay {
  constructor(parent, level) {
    this.canvas = document.createElement("canvas");
    this.canvas.width = Math.min(600, level.width * scale);
    this.canvas.height = Math.min(450, level.height * scale);
    parent.appendChild(this.canvas);
    this.cx = this.canvas.getContext("2d");

    this.flipPlayer = false;

    this.viewport = {
      left: 0,
      top: 0,
      width: this.canvas.width / scale,
      height: this.canvas.height / scale
    };
  }

  clear() {
    this.canvas.remove();
  }
}

syncState方法首先計算新視圖窗口, 然后在適當?shù)奈恢美L制。

CanvasDisplay.prototype.syncState = function(state) {
  this.updateViewport(state);
  this.clearDisplay(state.status);
  this.drawBackground(state.level);
  this.drawActors(state.actors);
};
DOMDisplay.prototype.syncState = function(state) {
  if (this.actorLayer) this.actorLayer.remove();
  this.actorLayer = drawActors(state.actors);
  this.dom.appendChild(this.actorLayer);
  this.dom.className = `game ${state.status}`;
  this.scrollPlayerIntoView(state);
};

在之前的更新相反, 我們現(xiàn)在必須在每次更新的時候, 重新繪制背景。因為畫布上的形狀只是像素, 所以我們在繪制完后沒有好的方法來移動或者刪除他們。因此更新畫布的唯一方法是清除并且重繪。

updateViewport 方法跟 scrollPlayerIntoView 方法一樣。它會檢查玩家是否太靠近視圖邊緣。

CanvasDisplay.prototype.updateViewport = function(state) {
  let view = this.viewport, margin = view.width / 3;
  let player = state.player;
  let center = player.pos.plus(player.size.times(0.5));

  if (center.x < view.left + margin) {
    view.left = Math.max(center.x - margin, 0);
  } else if (center.x > view.left + view.width - margin) {
    view.left = Math.min(center.x + margin - view.width,
                        state.level.width - view.width);
  }
  if (center.y < view.top + margin) {
    view.top = Math.max(center.y - margin, 0);
  } else if (center.y > view.top + view.height - margin) {
    view.top = Math.min(center.y + margin - view.height,
                        state.level.height - view.height);
  }
};

當我們成功或者失敗的時候, 我們需要清除當前場景, 因為如果失敗了, 我們需要重新來, 如果成功了, 我們需要刪除當前場景, 重新繪制一個新的場景。

CanvasDisplay.prototype.clearDisplay = function(status) {
  if (status == "won") {
    this.cx.fillStyle = "rgb(68, 191, 255)";
  } else if (status == "lost") {
    this.cx.fillStyle = "rgb(44, 136, 214)";
  } else {
    this.cx.fillStyle = "rgb(52, 166, 251)";
  }
  this.cx.fillRect(0, 0,
                  this.canvas.width, this.canvas.height);
};

接下來, 我們需要繪制墻壁和熔巖。首先, 我們遍歷當前視圖中所有的墻壁和磚頭。我們使用 sprites.png 繪制所有非空的墻磚(墻、熔巖、金幣)。在提供的素材中, 我們墻壁是20px * 20px, 偏移量是0,熔巖也是 20px * 20px, 但是偏移量是20px.

let otherSprites = document.createElement("img");
otherSprites.src = "img/sprites.png";

CanvasDisplay.prototype.drawBackground = function(level) {
  let {left, top, width, height} = this.viewport;
  let xStart = Math.floor(left);
  let xEnd = Math.ceil(left + width);
  let yStart = Math.floor(top);
  let yEnd = Math.ceil(top + height);

  for (let y = yStart; y < yEnd; y++) {
    for (let x = xStart; x < xEnd; x++) {
      let tile = level.rows[y][x];
      if (tile == "empty") continue;
      let screenX = (x - left) * scale;
      let screenY = (y - top) * scale;
      let tileX = tile == "lava" ? scale : 0;
      this.cx.drawImage(otherSprites,
                        tileX,         0, scale, scale,
                        screenX, screenY, scale, scale);
    }
  }
};

最后我們需要繪制玩家的模型。

在前面的8個圖像中, 是一個完整的運動過程。第九個畫像是玩家靜止不動的狀態(tài), 第10個畫像是玩家在離地時候的狀態(tài)。因此當玩家移動的時候, 我們需要每60ms切換一幀。當玩家不動的時候繪制第九個畫面, 當玩家跳躍的時候繪制第十個畫面。

  CanvasDisplay.prototype.drawPlayer = function(player, x, y,
                                              width, height){
  width += playerXOverlap * 2;
  x -= playerXOverlap;
  if (player.speed.x != 0) {
    this.flipPlayer = player.speed.x < 0;
  }

  let tile = 8;
  if (player.speed.y != 0) {
    tile = 9;
  } else if (player.speed.x != 0) {
    tile = Math.floor(Date.now() / 60) % 8;
  }

  this.cx.save();
  if (this.flipPlayer) {
    flipHorizontally(this.cx, x + width / 2);
  }
  let tileX = tile * width;
  this.cx.drawImage(playerSprites, tileX, 0, width, height,
                                  x,     y, width, height);
  this.cx.restore();
};

對于不是玩家的模型, 我們根據(jù)對應模型的偏移量找到對應的圖像。

 CanvasDisplay.prototype.drawActors = function(actors) {
  for (let actor of actors) {
    let width = actor.size.x * scale;
    let height = actor.size.y * scale;
    let x = (actor.pos.x - this.viewport.left) * scale;
    let y = (actor.pos.y - this.viewport.top) * scale;
    if (actor.type === "player") {
      this.drawPlayer(actor, x, y, width, height);
    } else {
      let tileX = (actor.type === "coin" ? 2 : 1) * scale;
      this.cx.drawImage(otherSprites,
                        tileX, 0, width, height,
                        x,     y, width, height);
    }
   }
 };

最后

ok! 至此, 我們的超級瑪麗就改造完成, 后面會陸續(xù)加上一些其他的地圖元素 ~ 有興趣的小伙伴可以關(guān)注一下哦 ~

到此這篇關(guān)于Canvas在超級瑪麗游戲中的應用詳解的文章就介紹到這了,更多相關(guān)Canvas超級瑪麗游戲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

標簽:崇左 晉中 阜陽 青海 北海 眉山 營口 河池

巨人網(wǎng)絡通訊聲明:本文標題《Canvas在超級瑪麗游戲中的應用詳解》,本文關(guān)鍵詞  Canvas,在,超級,瑪麗,游戲,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Canvas在超級瑪麗游戲中的應用詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于Canvas在超級瑪麗游戲中的應用詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美gay视频| 免费福利视频一区二区三区| 思热99re视热频这里只精品| 中文xxx视频| 色偷偷偷亚洲综合网另类| 国产精品毛片久久久久久久| 亚洲人成午夜免电影费观看| 亚洲精品中文字幕乱码无线| 免费观看视频www| 国产精品99蜜臀久久不卡二区| 免费不卡欧美自拍视频| 国产精品88久久久久久妇女| 国产精品久久久免费看| 久久久免费精品| 在线成人av观看| 国产一级精品在线| 国产日韩欧美高清| 正在播放国产一区| 久久青草伊人| 欧美久久精品| 欧美日韩综合高清一区二区| 免费男同深夜夜行网站| 2024短剧网剧在线观看| www青青草原| 国产农村妇女毛片精品| 国产成人自拍网| 日韩中文字幕在线观看视频| 久久影音资源网| 羞羞网www| 97欧洲一区二区精品免费| 91大神在线播放精品| 免费成人你懂的| 奇米影视第四色7777| 色视频在线观看在线播放| 天堂资源在线观看| 红杏一区二区三区| 99久久这里有精品| 伊人亚洲精品| 精品sm在线观看| 国产一区视频观看| 国产精品白丝久久av网站| 亚洲图区综合网| 在线免费观看黄色小视频| 日本19禁啪啪吃奶大尺度| 色女孩综合影院| 国产成人久久精品77777综合| 亚洲综合精品视频| 欧美日韩亚洲一区二区三区四区| 草莓视频18免费观看| 天堂av资源网| 久热这里只精品99re8久| 精品国产91亚洲一区二区三区www| 无码人妻精品一区二区三| www红色一片_亚洲成a人片在线观看_| 精品国产区一区二| 视频一区视频二区国产精品| 久草在线视频精品| 一本加勒比hezyo黑人| 国产亚洲欧洲| 欧美亚洲一区二区在线观看| 国产精品熟女久久久久久| 99re在线播放| 最近中文字幕无免费| 麻豆av免费在线观看| 狠狠干天天干| 国产农村妇女毛片精品久久麻豆| 国内揄拍国内精品少妇国语| 精品一二三四| 在线观看精品视频一区二区三区| 欧美极品在线观看| 最近的2019中文字幕免费一页| 欧美娇小性xxxx| 成人xxx免费视频播放| 一区二区三区四区在线看| 亚洲国产日日夜夜| 91国内精品久久久| 亚洲第一香蕉网| 亚洲人精品午夜射精日韩| 超薄丝袜一区二区| 无码日本精品xxxxxxxxx| 99综合精品久久| 国产青春久久久国产毛片| 精品国产制服丝袜高跟| 伊人精品成人久久综合软件| 国产传媒久久久| 91av在线免费观看视频| 久草在线在线| 黑森林国产精品av| 色呦呦日韩精品| 久久婷婷成人综合色| 日韩电视剧在线观看免费网站| 日韩激情啪啪| 在线视频一区二区三区四区| 香蕉视频污视频| 日韩一区二区三区久久| 欧美乱熟臀69xxxxxx| 97人人爽人人澡人人精品| 欧美特黄aaaaaa| 亚洲在线一区| 亚洲综合精品国产一区二区三区| 久久无码专区国产精品s| 亚洲日本成人女熟在线观看| 99久久久无码国产精品性| h视频免费网站| 中文字幕日本不卡| 美女视频久久| 精品国产人妻一区二区三区| av在线播放观看| 中文字幕av片| 经典三级在线| 91精品在线观看国产| 亚洲天堂久久av| 一二三在线视频社区| 丁香六月激情婷婷| 91精品国自产| 中文字幕亚洲一区二区av在线| 星空大象在线观看免费播放| 久久爱av电影| ass精品国模裸体欣赏pics| 91精品国产乱码久久久久| 少妇精品视频一区二区| 成人午夜国产福到在线| 九九在线视频| 在线观看国产一区二区三区| 国产精品成人品| 老女人性生活视频| 久久免费少妇高潮99精品| 三级福利片在线观看| 日韩在线理论| 成年在线观看免费人视频| 国产精品毛片久久久久久久av| 久久婷婷五月综合色丁香| 亚洲国产视频一区| 在线观看免费播放网址成人| 精品国产99国产精品| 国产精品自拍片| 日韩jizzz| 91精品国产一区| 成人国产精品免费观看视频| 欧美电影一区二区| 欧美a级成人淫片免费看| 4438x成人网全国最大| 在线一区二区三区做爰视频网站| 国产蜜臀av在线播放| 另类小说综合欧美亚洲| 最新av电影网站| 欧美色图一区二区三区| 国产精品视频久久一区| 亚洲女人天堂a在线播放| 日韩一级特黄| 国产精品视频yy9099| 夜夜嗨av一区二区三区| 亚洲一区二区三区综合| 蜜臀精品一区二区三区| 成人淫片免费视频95视频| 日本久久一二三四| 苍井空浴缸大战猛男120分钟| 一级特黄大欧美久久久| 日韩av电影院| 久久99精品久久久久久久青青日本| 人人超在线公开视频| 亚洲社区在线| 热久久美女精品天天吊色| 日韩欧美在线免费| 成人免费看视频网站| 欧美刺激午夜性久久久久久久| 中文字幕一区日韩电影| 国产精品27p| 中文字幕+乱码+中文| 91精品久久久久久久久久不卡| 国产精品免费麻豆入口| 激情内射人妻1区2区3区| 亚洲日本乱码在线观看| 午夜精品剧场| 在线激情小视频| 青青草视频在线免费播放| 亚洲综合激情五月| av片哪里在线观看| 国产在线日韩在线| 亚洲色图偷拍自拍| 欧美日韩中文字幕精品| 在线观看欧美激情| 欧美日韩国产成人在线观看| 免费污网站在线观看| 中文字幕亚洲在线观看| 久久精品国产第一区二区三区最新章节| 校园春色亚洲色图| 国产精品久久久久久久久久ktv| 欧美日韩国产精品一区二区三区四区| 999久久久| caoporn国产精品免费视频| 国产一区二区在线观看免费视频| 日本卡一卡2卡3卡4精品卡网站| 色偷偷偷在线视频播放| 精品国产伦一区二区三| 欧美一级播放| 青青久久aⅴ北条麻妃| 欧美日韩国产综合一区二区| 国产精品 日产精品 欧美精品| 欧美三级超在线视频| 国产69精品久久久久9| 欧洲精品99毛片免费高清观看| 亚洲欧美日韩中文字幕一区二区三区| 欧美日韩伦理一区二区| 亚洲aⅴ乱码精品成人区| 好男人www在线视频| 国产高清精品一区二区三区| 天天噜噜噜噜噜噜| 久草热在线观看| 欧美视频一区二区三区四区| 久久国产美女视频| 日本欧美在线观看| 国产精品xxx在线观看www| 一级特黄aaaaaa大片| 国产精品777777| 欧美色图俺去了| 亚洲精品国产成人影院| 99久久精品无码一区二区毛片| 91香蕉国产线在线观看| 91短视频在线| 亚洲综合丝袜美腿| 鲁鲁在线中文| 五月天激情丁香| 国产精品一区在线| 欧美综合在线观看| 免费观看在线色综合| 国产成人av一区| 欧美日韩亚洲国产综合| 日韩视频第二页| 国产精品入口免费视| 欧美日韩一区二区在线观看| 小黄文在线观看| japanesexxxxfree在线观看| 国产厕所精品在线观看| 亚洲一级电影视频| 欧美性生交xxxxx久久久| 亚洲精品乱码久久久久| 九一国产精品视频| 69免费视频| 精品无码在线观看| 国产suv精品一区二区33| 手机看片1024日韩| 亚洲熟女乱综合一区二区| 污片在线免费看| 日日摸日日添日日躁av| 在线观看欧美理论a影院| 日韩av男人的天堂| 在线看片免费人成视久网| 乱人伦xxxx国语对白| 九九热在线视频| 中文字幕久精品免| 粉嫩av一区二区三区在线播放| 青青青免费视频在线2| 久久久无码精品亚洲日韩按摩| 国产欧美va欧美va香蕉在| 国语对白永久免费| 日本一区二区三区中文字幕| 一区二区三区四区精品| 欧美国产在线观看| 无码国产精品一区二区免费式直播| 欧美大片顶级少妇| 国产精品区一区二区三| 黄色一级片在线免费观看| 国产精品久久久久久麻豆一区软件| 亚洲免费播放| 日韩在线视频精品| 成人av动漫在线观看| 在线免费观看视频网站| 伊人久久大香线蕉av不卡| 国产精品对白交换视频| 国产在线精品一区| 欧美日韩国产高清一区二区三区| 伊人久久久久久久久久久久久久| 欧美成人三级视频网站| 日韩一级免费片| 亚洲午夜影视影院在线观看| 欧洲伦理片一区 二区 三区| 操她视频在线观看| 欧美日韩精品久久| 色94色欧美sute亚洲线路二| 中文字幕这里只有精品| 欧美白人最猛性xxxxx| 日本高清视频www| 国产成人免费91av在线| 国产精品看片资源| 国产精品欧美风情| 日本vs亚洲vs韩国一区三区二区| 男操女视频网站| 欧美一级大片| 欧美一级黑人aaaaaaa做受| 日韩黄色av| 久久久人成影片一区二区三区| 日韩影院免费视频| 一区二区三区日韩| 草草影院在线观看| 国产欧美日韩精品在线| 久久久久亚洲天堂| 一区二区三区四区视频免费观看| 激情四房婷婷| 色婷婷国产精品久久包臀| 国产精品日韩欧美大师| 一区二区三区网址| aaa国产精品| 激情五月少妇a| 可以看的av网址| 国产成年人视频网站| 日韩视频一区| 中文字幕第88页| 国产精品久久av| 麻豆明星ai换脸视频| 中文字幕日韩电影| 日本免费一区二区三区等视频| 亚洲国产综合91精品麻豆| 国产成人香蕉在线视频网站| 成人手机在线视频| 曰本三级日本三级日本三级| 日韩亚洲综合在线| 免费激情视频网站| 91老师片黄在线观看| 成人精品aaaa网站| 午夜啪啪小视频| 国产精品爽爽爽| 97se亚洲| 美女亚洲一区| 国产午夜福利视频在线观看| 色网站免费在线观看| 1769国产精品视频| 性欧美xxxx|