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

游戲萬能卡片—舒爾特方格游戲

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
通過開發(fā)這個(gè)小游戲元服務(wù),學(xué)習(xí)到不少知識(shí),其實(shí)我有嘗試過把數(shù)據(jù)庫(kù)操作類寫到動(dòng)態(tài)共享包里,這樣元服務(wù)打包后不就更小了。

想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:

51CTO 開源基礎(chǔ)軟件社區(qū)

https://ost.51cto.com

前言

舒爾特方格游戲,是注意力訓(xùn)練方法之一,可以幫助孩子糾正上課分心走神、回家做作業(yè)拖拉毛病,但不能貪玩哦,玩多了,對(duì)眼睛,視力不好。

1. 消息通知欄,通知用戶當(dāng)前最優(yōu)成績(jī),也就是當(dāng)前最快時(shí)間。2. 元服務(wù)卡片,在桌面上添加2x2或2x4或2x4規(guī)格元服務(wù)卡片,能看到不同布局隨機(jī)數(shù)字,根據(jù)左上角紅色字提示,快速完成點(diǎn)擊,用時(shí)最少為最優(yōu)成績(jī),1x2規(guī)格元服務(wù)卡片,只顯示當(dāng)前最優(yōu)成績(jī),點(diǎn)擊可以3. 關(guān)系型數(shù)據(jù)庫(kù),用于查詢,添加,更新,刪除元服務(wù)卡片信息和各卡片游戲用時(shí)成績(jī)數(shù)據(jù)。

B站高清演示視頻

游戲萬能卡片-舒爾特方格游戲-開源基礎(chǔ)軟件社區(qū)

知識(shí)點(diǎn)

  • 消息通知:提供通知管理的能力,包括發(fā)布、取消發(fā)布通知,創(chuàng)建、獲取、移除通知通道,訂閱、取消訂閱通知,獲取通知的使能狀態(tài)、角標(biāo)使能狀態(tài),獲取通知的相關(guān)信息等。
  • 關(guān)系型數(shù)據(jù)庫(kù):關(guān)系型數(shù)據(jù)庫(kù)基于SQLite組件提供了一套完整的對(duì)本地?cái)?shù)據(jù)庫(kù)進(jìn)行管理的機(jī)制,對(duì)外提供了一系列的增、刪、改、查等接口,也可以直接運(yùn)行用戶輸入的SQL語(yǔ)句來滿足復(fù)雜的場(chǎng)景需要。
  • 元服務(wù)卡片開發(fā):卡片是一種界面展示形式,可以將應(yīng)用的重要信息或操作前置到卡片,以達(dá)到服務(wù)直達(dá)、減少體驗(yàn)層級(jí)的目的。
  • 卡片提供方:顯示卡片內(nèi)容,控制卡片布局以及控件點(diǎn)擊事件。
  • 卡片使用方:顯示卡片內(nèi)容的宿主應(yīng)用,控制卡片在宿主中展示的位置。
  • 卡片管理服務(wù):用于管理系統(tǒng)中所添加卡片的常駐代理服務(wù),包括卡片對(duì)象的管理與使用,以及卡片周期性刷新等。
  • 軟件要求
  • DevEco Studio版本:DevEco Studio 3.1 Release及以上版本。
  • HarmonyOS SDK版本:API version 9及以上版本。
  • 硬件要求
  • 設(shè)備類型:華為手機(jī)3.1系統(tǒng)或運(yùn)行在DevEco Studio上的遠(yuǎn)程模擬器API9。
  • HarmonyOS系統(tǒng):3.1.0 Developer Release及以上版本。

卡片講解

 1. 1x2卡片主要顯示所有卡片最優(yōu)成績(jī),也就是用時(shí)最少的,同時(shí)點(diǎn)擊卡片,跳轉(zhuǎn)到主界面,查看卡片游戲記錄。

游戲萬能卡片-舒爾特方格游戲-開源基礎(chǔ)軟件社區(qū)

2. 2x2卡片顯示的是3x3布局隨機(jī)生成1~9數(shù)字,正上方標(biāo)題顯示挑戰(zhàn)成功或失敗提示,左上角紅色字提示下一個(gè)要點(diǎn)擊的數(shù)字按鈕,右上角顯示當(dāng)次完成后用時(shí)和此卡片用時(shí)最少成績(jī),當(dāng)此次的用時(shí)少于最好用時(shí),挑戰(zhàn)成功,并更新數(shù)據(jù)庫(kù)此卡片記錄,如果此次用時(shí)大于最好用時(shí),提示挑戰(zhàn)失敗,不用更新數(shù)據(jù)庫(kù)。

游戲萬能卡片-舒爾特方格游戲-開源基礎(chǔ)軟件社區(qū)

3. 2x4卡片顯示的是7x2布局隨機(jī)生成1~14數(shù)字,顯示內(nèi)容和游戲規(guī)則與2x2卡片一樣。

游戲萬能卡片-舒爾特方格游戲-開源基礎(chǔ)軟件社區(qū)

4. 4x4卡片顯示的是6x6布局隨機(jī)生成1~36數(shù)字,顯示內(nèi)容和游戲規(guī)則與2x2卡片一樣。

游戲萬能卡片-舒爾特方格游戲-開源基礎(chǔ)軟件社區(qū)

5. 首次啟動(dòng)或點(diǎn)擊1x2卡片進(jìn)入到主界面,主界面顯示各卡片游戲成績(jī)記錄。

游戲萬能卡片-舒爾特方格游戲-開源基礎(chǔ)軟件社區(qū)

6. 通知顯示效果。

游戲萬能卡片-舒爾特方格游戲-開源基礎(chǔ)軟件社區(qū)

代碼講解

1. 數(shù)據(jù)庫(kù)操作后端項(xiàng)目結(jié)構(gòu)圖。

游戲萬能卡片-舒爾特方格游戲-開源基礎(chǔ)軟件社區(qū)

FormData.ets實(shí)體類代碼如下:

export default class FormData {
  // 卡片ID
  formId: string;
  // 距陣數(shù) 3x3
  matrixNum: string;
  // 最優(yōu)成績(jī)
  bestScore: number;
  // 總最優(yōu)成績(jī)
  totalBestScore: number;
}

Form.ets數(shù)據(jù)庫(kù)卡片表如下:

export default class Form {
  // 卡片ID
  formId: string;
  // 卡片名稱
  formName: string;
  // 卡片描述
  dimension: number;
  /**
   * 封裝卡片數(shù)據(jù)
   * @returns
   */
  toValuesBucket() {
    return {
      'formId': this.formId,
      'formName': this.formName,
      'dimension': this.dimension
    };
  }
}

ScoreData.ets游戲記錄成績(jī)表如下:

export default class ScoreData {
  // 卡片
  formId: string;
  // 距陣數(shù) 3x3
  matrixNum: string;
  // 最優(yōu)成績(jī)
  bestScore: number;
  /**
   * 獲取插入成績(jī)記錄數(shù)
   * @returns
   */
  toValuesBucket() {
    return {
      'formId': this.formId,
      'matrixNum': this.matrixNum,
      'bestScore': this.bestScore
    };
  }
}

DatabaseUtils.ets數(shù)據(jù)庫(kù)操作類部分代碼如下:

export class DatabaseUtils {

  /**
   * 創(chuàng)建RDB數(shù)據(jù)庫(kù)
   *
   * @param{context}上下文
   * @return{globalThis.rdbStore}return rdbStore RDB數(shù)據(jù)庫(kù)
   */
  async createRdbStore(context: Context) {
    console.info(CommonConstants.DATABASE_TAG, 'xx DatabaseUtils-createRdbStore 開始...')
    // 如果全局變量rdbStore不存在,創(chuàng)建
    if (!globalThis.rdbStore) {
      console.info(CommonConstants.DATABASE_TAG, 'xx DatabaseUtils-createRdbStore 新創(chuàng)建!')

      await DataRdb.getRdbStore(context, CommonConstants.RDB_STORE_CONFIG)
        .then((rdbStore) => {
          console.info(CommonConstants.DATABASE_TAG, 'xx RDB Store回調(diào)')
          if (rdbStore) {
            // 創(chuàng)建卡片表
            rdbStore.executeSql(CommonConstants.CREATE_TABLE_FORM).catch((error) => {
              console.error(CommonConstants.DATABASE_TAG, 'xx DatabaseUtils 創(chuàng)建卡片表失敗:' + JSON.stringify(error))
              Logger.error(CommonConstants.DATABASE_TAG, 'executeSql Form error ' + JSON.stringify(error));
            });
            // 創(chuàng)建成績(jī)表
            rdbStore.executeSql(CommonConstants.CREATE_TABLE_SCORE_DATA).catch((error) => {
              console.error(CommonConstants.DATABASE_TAG, 'xx DatabaseUtils 創(chuàng)建成績(jī)表失敗:' + JSON.stringify(error))
              Logger.error(CommonConstants.DATABASE_TAG, 'executeSql Sensor error ' + JSON.stringify(error));
            });
            // 存儲(chǔ)RDBStore到全局變量
            globalThis.rdbStore = rdbStore;
            console.info(CommonConstants.DATABASE_TAG, 'xx DatabaseUtils-createRdbStore 創(chuàng)建成功!')
          }
        }).catch((error) => {
          console.error(CommonConstants.DATABASE_TAG, 'xx DatabaseUtils 創(chuàng)建RDB數(shù)據(jù)庫(kù)失敗:' + JSON.stringify(error))
          Logger.error(CommonConstants.DATABASE_TAG, 'createRdbStore error ' + JSON.stringify(error));
        });
    }else {
      console.info(CommonConstants.DATABASE_TAG, 'xx DatabaseUtils-createRdbStore 已經(jīng)存在!')
    }

    console.info(CommonConstants.DATABASE_TAG, 'xx DatabaseUtils-createRdbStore 結(jié)束...')
    return globalThis.rdbStore;
  }

  /**
   * 插入卡片數(shù)據(jù)。
   *
   * @param{Form}Form表單實(shí)體。
   * @param{DataRdb.RdbStore}RDB存儲(chǔ)RDB數(shù)據(jù)庫(kù)。
   * @return返回操作信息。
   */
  insertForm(form: Form, rdbStore: DataRdb.RdbStore) {
    rdbStore.insert(CommonConstants.TABLE_FORM, form.toValuesBucket()).catch((error) => {
      Logger.error(CommonConstants.DATABASE_TAG, 'insertForm error ' + JSON.stringify(error));
    });
  }
  
    /**
   * 將成績(jī)插入數(shù)據(jù)庫(kù)。
   *
   * @param{ScoreData}scoreData。
   * @param{DataRdb.RdbStore}RDB存儲(chǔ)RDB數(shù)據(jù)庫(kù)。
   */
  insertValues(scoreData: ScoreData, rdbStore: DataRdb.RdbStore) {
    rdbStore.insert(CommonConstants.TABLE_SCORE, scoreData.toValuesBucket()).catch((error) => {
      Logger.error(CommonConstants.DATABASE_TAG, 'insertValues error ' + JSON.stringify(error));
    });
  }
  
    /**
   *  更新成績(jī)到數(shù)據(jù)庫(kù)
   * @param scoreData
   * @param rdbStore
   */
  updateValues(scoreData: ScoreData, rdbStore: DataRdb.RdbStore) {}
  
  /**
   * 刪除卡片數(shù)據(jù)。
   *
   * @param{string}formId表單ID。
   * @param{DataRdb.RdbStore}RDB存儲(chǔ)RDB數(shù)據(jù)庫(kù)。
   */
  deleteFormData(formId: string, rdbStore: DataRdb.RdbStore) {}
  
  /**
   * 更新卡片
   *
   * @param{DataRdb.RdbStore}RDB存儲(chǔ)RDB數(shù)據(jù)庫(kù)。
   */
  updateForms(rdbStore: DataRdb.RdbStore) {}
  
  /**
   * 發(fā)送通知
   *
   * @param{string}Steps顯示的值步數(shù)。
   */
  async sendNotifications(score: number) {}

}

2. 卡片前端項(xiàng)目結(jié)構(gòu)圖。

游戲萬能卡片-舒爾特方格游戲-開源基礎(chǔ)軟件社區(qū)

EntryAbility.ets 程序入口初始化數(shù)據(jù)庫(kù)代碼如下:

onCreate(want, launchParam) {
    // 數(shù)據(jù)庫(kù)初始化
    globalThis.abilityWant = want;
    globalThis.abilityParam = launchParam;
    console.info(CommonConstants.ENTRY_ABILITY_TAG, 'xx onCreate 創(chuàng)建RDB數(shù)據(jù)庫(kù)')
    // 創(chuàng)建RDB數(shù)據(jù)庫(kù)
    DatabaseUtils.createRdbStore(this.context).then((rdbStore) => {
    	console.info(CommonConstants.ENTRY_ABILITY_TAG, 'xx onCreate RDB成功')
    }).catch((error) => {
    	console.error(CommonConstants.ENTRY_ABILITY_TAG, 'xx onCreate 創(chuàng)建數(shù)據(jù)庫(kù)失敗:' + JSON.stringify(error))
    	Logger.error(CommonConstants.ENTRY_ABILITY_TAG, 'onCreate rdb error ' + JSON.stringify(error));
    });
}

EntryFormAbility.ets卡片生命周期代碼如下:

onAddForm(want) {
    // 獲取卡片ID:ohos.extra.param.key.form_identity
    let formId: string = want.parameters[CommonConstants.FORM_PARAM_IDENTITY_KEY] as string;
    // 獲取卡片名稱:ohos.extra.param.key.form_name
    let formName: string = want.parameters[CommonConstants.FORM_PARAM_NAME_KEY] as string;
    // 獲取卡片規(guī)格:ohos.extra.param.key.form_dimension
    let dimensionFlag: number = want.parameters[CommonConstants.FORM_PARAM_DIMENSION_KEY] as number;

    console.info(CommonConstants.ENTRY_FORM_ABILITY_TAG, `xx 添加卡片是:${formId} ${dimensionFlag} ${dimensionFlag}`)
    DatabaseUtils.createRdbStore(this.context).then((rdbStore) => {
      // 卡片信息
      let form: Form = new Form();
      form.formId = formId;
      form.formName = formName;
      form.dimension = dimensionFlag;
      console.info(CommonConstants.ENTRY_FORM_ABILITY_TAG, 'xx onAddForm 新增卡片信息:' + JSON.stringify(form))
      // 保存卡片信息到數(shù)據(jù)庫(kù)
      DatabaseUtils.insertForm(form, rdbStore);
      // 獲取最優(yōu)成績(jī)
      getBestScore(rdbStore, dimensionFlag, formId);
    }).catch((error) => {
      console.error(CommonConstants.ENTRY_FORM_ABILITY_TAG, 'xx onAddForm 添加卡片失敗:' + JSON.stringify(error))
      Logger.error(CommonConstants.ENTRY_FORM_ABILITY_TAG, 'onAddForm rdb error ' + JSON.stringify(error));
    });

    // 每五分鐘刷新一次
    formProvider.setFormNextRefreshTime(formId, CommonConstants.FORM_NEXT_REFRESH_TIME, (error, data) => {
      if (error) {
        console.error(CommonConstants.ENTRY_FORM_ABILITY_TAG, 'xx onAddForm 更新卡片失敗:' + JSON.stringify(error))
        Logger.error(CommonConstants.ENTRY_FORM_ABILITY_TAG, 'refreshTime, error:' + JSON.stringify(error));
      } else {
        console.info(CommonConstants.ENTRY_FORM_ABILITY_TAG, 'xx onAddForm 更新卡片成功')
        Logger.info(CommonConstants.ENTRY_FORM_ABILITY_TAG, 'refreshTime success ' + JSON.stringify(data));
      }
    });

    // 返回初始化卡片數(shù)據(jù)
    let formData: FormData = new FormData();
    formData.formId = formId;
    formData.bestScore = 0;
    formData.matrixNum = '1x1';
    formData.totalBestScore = 0;
    return formBindingData.createFormBindingData(formData);
  }

卡片頁(yè)面部分代碼,這里就顯示2x2卡片代碼如下:

build() {
    Column(){
      Text(this.message)
        .width('100%')
        .fontSize(12)
        .textAlign(TextAlign.Center)
        .fontWeight(700)
        .margin({top: 6, bottom: 6})
      Row(){
        Text(`下一個(gè):${this.flagNum == 0 ? 1 : this.flagNum}`)
          .fontSize(10).fontWeight(400)
          .fontColor(Color.Red)
        Row(){
          Text(`此次:${this.currentScore}`)
            .fontSize(10).fontWeight(400)
          Text(`最好:${this.bestScore}`)
            .fontSize(10).fontWeight(400)
        }
      }
      .width('100%')
      .padding({left: 10, right: 10})
      .alignItems(VerticalAlign.Center)
      .justifyContent(FlexAlign.SpaceBetween)

      Flex({justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center, wrap: FlexWrap.Wrap}){
        // 循環(huán)顯示數(shù)字按鈕
        ForEach(this.numArray, (day: string) => {
          Button(day, { type: ButtonType.Circle, stateEffect: true })
            .width(40)
            .height(40)
            .padding(1)
            .margin(4)
            .fontSize(12)
            .backgroundColor(Color.Gray)
            .stateStyles({
              normal: this.normalStyles,
              pressed: this.pressedStyles
            })
            .onClick(() => { this.startGame(Number(day)) })
        }, day => day)
      }
      .width('100%')
      .height('100%')
      .padding({ top: 2, left: 5, right: 5 })
    }
    .width('100%')
    .height('100%')
  }

總結(jié)

通過開發(fā)這個(gè)小游戲元服務(wù),學(xué)習(xí)到不少知識(shí),其實(shí)我有嘗試過把數(shù)據(jù)庫(kù)操作類寫到動(dòng)態(tài)共享包里,這樣元服務(wù)打包后不就更小了,然而啟動(dòng)后白屏了,進(jìn)步問題,等華為相關(guān)技術(shù)人員回復(fù),想學(xué)習(xí)動(dòng)態(tài)共享包的,可以參考關(guān)系型數(shù)據(jù)庫(kù)-動(dòng)態(tài)共享包開發(fā), 總結(jié)這個(gè)項(xiàng)目用到以下知識(shí)點(diǎn):

  1. 使用notification發(fā)布通知。
  2. 使用關(guān)系型數(shù)據(jù)庫(kù)插入、更新、刪除卡片數(shù)據(jù)。
  3. 使用FormExtensionAbility創(chuàng)建、更新、刪除元服務(wù)卡片。

想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:

51CTO 開源基礎(chǔ)軟件社區(qū)

https://ost.51cto.com

責(zé)任編輯:jianghua 來源: 51CTO 開源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2021-12-27 15:10:55

鴻蒙HarmonyOS應(yīng)用

2023-08-07 14:09:58

數(shù)據(jù)庫(kù)開發(fā)

2023-06-14 15:10:36

鴻蒙游戲開發(fā)

2022-07-06 20:40:27

舒爾特方格鴻蒙

2023-03-22 09:00:38

2016-11-24 12:07:42

Android萬能圓角ImageView

2020-06-16 08:32:00

人工智能技術(shù)機(jī)器學(xué)習(xí)

2022-11-21 09:57:18

網(wǎng)關(guān)系統(tǒng)

2022-06-23 18:10:15

多云

2009-02-27 13:48:00

Mdaemon郵件服務(wù)器

2012-01-10 11:36:17

Autodesk歐特克傳媒娛樂

2021-08-17 14:25:11

人臉識(shí)別人工智能身份識(shí)別

2011-06-16 15:57:25

Android

2022-11-30 13:13:41

節(jié)能減碳PUE

2014-02-17 10:56:21

Hadoop

2021-11-11 10:41:25

代碼開發(fā)工具

2022-06-27 08:36:08

PythonLambda
點(diǎn)贊
收藏

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

成人一级片免费看| 韩国日本美国免费毛片| 亚洲精品福利网站| 一区二区精品| 中文字幕精品在线视频| 亚洲天堂伊人网| 高清视频在线观看三级| 91丨九色丨尤物| 成人午夜在线视频一区| 日本在线免费观看| 不卡av一区二区| 日韩欧美国产不卡| 丰满少妇在线观看| a√中文在线观看| 国产精品毛片久久久久久| aa日韩免费精品视频一| 欧美brazzers| 一区在线视频| 精品国内亚洲在观看18黄| 国产精品久久AV无码| 日本久久二区| 色综合色综合色综合| japanese在线播放| 高清av在线| www国产成人免费观看视频 深夜成人网| 日韩av电影在线网| 国产在线视频你懂的| 日韩免费在线| 亚洲九九九在线观看| 中文字幕人妻无码系列第三区| 91久久国产综合久久91猫猫| 亚洲最大色网站| 亚洲欧美日韩在线综合| 日本亚洲一区| www.视频一区| 成人看片在线| hs视频在线观看| 美腿丝袜亚洲色图| 国产成人精品免高潮在线观看 | 果冻天美麻豆一区二区国产| 欧美久久高跟鞋激| 午夜在线观看av| 日韩欧美一区二区三区在线观看 | 岳的好大精品一区二区三区| 精品精品国产高清a毛片牛牛 | 精品人妻一区二区三区蜜桃 | 欧美jizzhd69巨大| 亚洲国产成人在线| 先锋在线资源一区二区三区| 日本人妖在线| 久久色在线观看| 欧美理论一区二区| 九色视频网站在线观看| 久久久久国产精品人| 欧美在线激情| 在线免费观看黄| 国产精品免费视频一区| 亚洲一二三区在线| 麻豆av在线免费看| 亚洲婷婷国产精品电影人久久| 在线一区高清| 国产精品久久麻豆| 亚洲夂夂婷婷色拍ww47| 亚洲精品久久久久久久蜜桃臀| 暖暖在线中文免费日本| 午夜精品久久久久久久| 国内性生活视频| 国产亚洲一区二区手机在线观看 | 自由日本语亚洲人高潮| 欧美精品一区二区三区国产精品| 国产精品白嫩白嫩大学美女| 国产精品v日韩精品v欧美精品网站| 久久精品久久精品亚洲人| 久久高清内射无套| 亚洲二区免费| 国产999在线观看| 在线播放国产一区| 国产一区二区不卡老阿姨| 91在线精品观看| 亚洲欧美综合一区二区| 国产欧美一区二区三区沐欲 | 激情文学一区| 91国内在线视频| 69av视频在线观看| 国模娜娜一区二区三区| 成人自拍爱视频| 青梅竹马是消防员在线| 国产精品国产a级| 国产精品久久久久久久乖乖| 美女100%一区| 欧美久久久久久蜜桃| 在线免费播放av| 91亚洲国产| 久久久久这里只有精品| 波多野结衣在线电影| 国产一区 二区 三区一级| 国产一区二区三区免费不卡| 福利在线播放| 亚洲大片精品永久免费| 天天干在线影院| www.豆豆成人网.com| 在线观看欧美日韩国产| 麻豆91精品91久久久| 日韩高清在线电影| 懂色中文一区二区三区在线视频| 国产玉足榨精视频在线观看| 亚洲一区二区av电影| 久久午夜夜伦鲁鲁一区二区| 91精品丝袜国产高跟在线| 在线免费看av不卡| 精品成人久久久| 国产精品自拍一区| 一本色道久久综合亚洲二区三区| 黄色漫画在线免费看| 制服丝袜一区二区三区| 黄色片网站免费| 亚洲国产裸拍裸体视频在线观看乱了中文 | 朝桐光一区二区| 亚洲国产精品va在看黑人| 久久久久久久久久97| 久久激情久久| 国内视频一区二区| 色黄网站在线观看| 欧美日本韩国一区二区三区视频| 亚洲成人av免费在线观看| 欧美伊人影院| 国产欧美 在线欧美| 深夜福利视频一区| 亚洲r级在线视频| 少妇欧美激情一区二区三区| 99热国内精品永久免费观看| 国产成人久久久精品一区| 五十路在线视频| 亚洲影视在线播放| 999热精品视频| 围产精品久久久久久久| 国产在线观看精品| 中国日本在线视频中文字幕| 91久久精品日日躁夜夜躁欧美| 性色av蜜臀av色欲av| 亚洲精品美女| 国产伦精品一区二区三区四区视频| 二区三区四区高清视频在线观看| 欧美日韩不卡一区| 中国美女黄色一级片| 美女视频一区在线观看| 日韩欧美手机在线| 日韩欧美一区二区三区免费观看| 国内久久精品视频| 少妇特黄a一区二区三区| 中文在线免费二区三区| 日韩av在线免费看| 中文字幕激情小说| 久久综合久久综合九色| 国产99久久九九精品无码| 女仆av观看一区| 18性欧美xxxⅹ性满足| 神马精品久久| 色哟哟在线观看一区二区三区| 美女洗澡无遮挡| 琪琪一区二区三区| 国产a级片免费看| 麻豆精品久久| 97国产精品免费视频| 婷婷亚洲一区二区三区| 色88888久久久久久影院野外| 国产真人做爰视频免费| 蜜桃av一区二区三区| 玖玖精品在线视频| 国产精品qvod| 日韩av观看网址| 9色在线视频网站| 7777女厕盗摄久久久| 免费看一级一片| 91女人视频在线观看| 亚洲国产精品三区| 欧美99久久| 久久大香伊蕉在人线观看热2| 影视一区二区三区| 久久综合色88| 亚洲人成色777777精品音频| 在线观看免费成人| 欧美色图亚洲天堂| 91美女视频网站| 91视频这里只有精品| 欧美精品激情| 欧美亚洲丝袜| 精品国产一级| 人人澡人人澡人人看欧美| 理论片午午伦夜理片在线播放| 日韩精品一区二区三区在线| 日本视频在线观看免费| 亚洲欧美日韩中文字幕一区二区三区 | 欧美精品日韩精品| 日韩av电影网| 国产精品国产自产拍高清av| 国产吃瓜黑料一区二区| 久久久999| 精品成在人线av无码免费看| 欧美色图国产精品| 国产精品免费区二区三区观看| 国产精品久久久久av电视剧| 欧美国产视频一区二区| xxxxx日韩| 日韩国产精品视频| 国产男男gay体育生白袜| 欧美午夜美女看片| 久久久久久久极品内射| 国产精品免费aⅴ片在线观看| 欧美久久久久久久久久久| 蜜桃久久精品一区二区| 欧美大片在线播放| 欧美91视频| 日本特级黄色大片| 亚洲日本三级| 国产伦精品一区二区三区免| 粉嫩一区二区三区在线观看| 国产精品草莓在线免费观看| 九色porny丨入口在线| 麻豆乱码国产一区二区三区| 成人性生交大片免费看午夜| 亚洲黄色在线观看| 亚洲国产欧美另类| 欧美一区二区精品| 在线不卡免费视频| 一本一道久久a久久精品 | 秋霞a级毛片在线看| 亚洲欧美日本另类| 外国精品视频在线观看 | 亚洲美女网站| 青青视频免费在线观看| 五月激情久久久| 亚洲午夜精品一区二区| 日韩成人影院| 视频一区二区三| 欧美精品系列| 日韩色妇久久av| 国产综合久久久| 日韩午夜视频在线观看| 亚洲综合福利| 日韩伦理一区二区三区av在线| 亚洲区小说区图片区qvod按摩| 精品免费日产一区一区三区免费| 爱爱精品视频| 精品久久蜜桃| 五月综合久久| 欧美一区1区三区3区公司| 国产精品欧美在线观看| 欧美一区视久久| 日韩理论电影大全| 综合色婷婷一区二区亚洲欧美国产| 色欧美自拍视频| 亚洲综合激情五月| 欧美在线播放| 妞干网在线观看视频| 一级成人国产| 久久综合久久色| 蜜桃在线一区二区三区| 亚洲一区二区在线视频观看| 国产一区啦啦啦在线观看| 秋霞午夜鲁丝一区二区| 成人午夜看片网址| 日本aaa视频| 国产欧美日本一区视频| 亚洲色图27p| 一区二区三区日韩欧美精品 | 欧洲av一区二区嗯嗯嗯啊| 国产精品午夜一区二区| 91麻豆精品91久久久久同性| 精品国产va久久久久久久| 亚洲电影免费观看高清完整版在线观看 | 欧美国产日韩a欧美在线观看 | 国产日本在线观看| 色噜噜国产精品视频一区二区| 国产超级va在线视频| 97成人超碰免| 欧美激情啪啪| 国产成人免费观看| 国产探花在线精品| 久久精品国产精品亚洲精品色| 狠久久av成人天堂| 国产女女做受ⅹxx高潮| 久久精品国产亚洲aⅴ| 午夜影院福利社| 国产欧美一区二区精品性 | 欧美日韩另类字幕中文| 五月天中文字幕| 欧美电视剧在线看免费| 精品亚洲综合| 欧美精品情趣视频| 老司机成人影院| 99se婷婷在线视频观看| 欧美日韩123| 国产精品88久久久久久妇女| 午夜亚洲性色视频| a级大片免费看| 国产亚洲欧美中文| 欧美交换国产一区内射| 在线观看日产精品| 手机看片福利永久| 久久成人精品电影| 粉嫩一区二区三区| 国产一区二区三区高清| 欧美好骚综合网| 免费看一级大黄情大片| 国产suv精品一区二区883| 国产ts丝袜人妖系列视频| 亚洲免费观看视频| 成人黄色激情视频| 亚洲国产一区二区三区四区| 国产在线观看a视频| 日韩免费黄色av| 久久99精品久久久久久欧洲站| www.亚洲一区二区| 人人超碰91尤物精品国产| 久久久老熟女一区二区三区91| 国产精品高潮久久久久无| av大全在线观看| 精品第一国产综合精品aⅴ| 日本高清视频在线观看| 国产成+人+综合+亚洲欧洲| 久久久久97| 免费人成自慰网站| 国产一区91精品张津瑜| 天天做夜夜爱爱爱| 欧美色区777第一页| 狠狠色伊人亚洲综合网站l| 性色av一区二区咪爱| xvideos.蜜桃一区二区| 在线观看av的网址| 精品一二线国产| 呻吟揉丰满对白91乃国产区| 91成人在线观看喷潮| 奇米影视888狠狠狠777不卡| 98精品国产自产在线观看| av日韩精品| 久草视频这里只有精品| 国产jizzjizz一区二区| 欧美卡一卡二卡三| 欧美一区二区在线看| 黄色av电影在线播放| 91精品国产综合久久久久久蜜臀| 色97色成人| 中文字幕亚洲影院| 中文字幕在线观看一区二区| 亚洲自拍偷拍另类| 久久精品视频中文字幕| 不卡一区视频| 人妻无码一区二区三区四区| 国产精品99久久久久久久女警 | 久久精品老司机| 欧美日韩亚洲精品一区二区三区 | 国产精品午夜av| 日韩a∨精品日韩在线观看| 成年人网站91| 天天操夜夜操视频| 亚洲图片欧美日产| 久久精品国产福利| 精品一区二区三区毛片| 国产成+人+日韩+欧美+亚洲| 久久精品免费在线| 国产视频亚洲精品| 成人a在线观看高清电影| 正在播放亚洲| 国产91在线|亚洲| 国产高潮久久久| 少妇激情综合网| 视频国产精品| 国产黄视频在线| 欧美高清在线精品一区| 国产尤物视频在线观看| 国产69精品久久久久99| 少妇精品久久久| 免费网站在线观看黄| 亚洲一区二区三区四区在线免费观看| 手机看片一区二区三区| 国产成人精品午夜| 欧美黄色大片网站| 51调教丨国产调教视频| 欧美日韩成人激情| 波多野结衣精品| 亚洲春色在线视频| 国产白丝精品91爽爽久久| 成人h动漫精品一区二区下载| 久久精品国产一区二区三区| 麻豆一区二区| 日韩av片专区| 亚洲成a人片在线不卡一二三区| 国产主播福利在线| 69174成人网| 久久久久99| 九九九在线视频| 亚洲午夜色婷婷在线| 一区二区网站| 婷婷六月天在线| 亚洲永久精品国产| 自拍视频在线网| 久久影视中文粉嫩av| 国产精品123区| 中文字幕第三页|