精品欧美一区二区三区在线观看 _久久久久国色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)

国产激情一区二区三区在线观看| 一区二区三区四区蜜桃 | 囯产精品久久久久久| 亚洲精品无吗| 亚洲国产美国国产综合一区二区| 亚洲v日韩v综合v精品v| 阿v天堂2014| 在线看片福利| 北条麻妃一区二区三区| 在线激情影院一区| 人人干人人视频| 久香视频在线观看| 国产欧美午夜| 亚洲国产97在线精品一区| 日本三级中文字幕在线观看| 一区精品在线观看| 国产成人手机高清在线观看网站| 午夜精品成人在线| 国产精品久久亚洲| av资源吧首页| julia中文字幕一区二区99在线| 亚洲欧美偷拍三级| 成人免费淫片aa视频免费| 特黄一区二区三区| 日韩毛片免费看| 国产精品女同互慰在线看| 国产精品午夜视频| 成人18视频免费69| 欧美亚洲综合视频| 亚洲天堂成人网| 91免费综合在线| 人妻少妇精品一区二区三区| 欧美久久一区二区三区| 亚洲精品国产视频| 国产免费一区二区| 中国一级免费毛片| 精品国产网站| 欧美精品亚洲二区| 精品国产一区二区三区在线| 国产黄色av网站| 欧美午夜一区| 国产视频久久久| 噜噜噜久久亚洲精品国产品麻豆| 天堂成人在线| 日韩国产精品大片| 久久精品2019中文字幕| 久草福利在线观看| 国产黄大片在线观看| 久久―日本道色综合久久| 国产精品久久久久久亚洲影视| 99热在线观看精品| 亚洲国产精品免费视频| 香蕉成人伊视频在线观看| 久久久久网址| 亚洲综合精品在线| 激情五月***国产精品| 亚洲欧美日韩国产精品| 视频免费1区二区三区| 丰满的护士2在线观看高清| 91丨九色丨黑人外教| 国产精品亚洲精品| 精品无码人妻一区二区三区品| 日韩中出av| 欧美精品自拍偷拍| 国产午夜福利在线播放| 午夜精品一区| 91啪亚洲精品| 2022国产精品| 国产精品va无码一区二区三区| 欧美理论在线播放| 亚洲精品一区二区三区在线观看 | 石原莉奈在线亚洲二区| 久久天天躁狠狠躁夜夜av| 无码国产69精品久久久久网站| 精品视频在线一区二区在线| 亚洲一级电影视频| 亚洲精品日韩在线观看| 色噜噜在线播放| 久久91精品国产91久久小草| 97国产在线观看| 中文字幕在线观看2018| 香蕉一区二区| 欧美不卡激情三级在线观看| 在线看的黄色网址| 看黄在线观看| 亚洲一区二区综合| 在线观看免费黄色片| 黄色毛片在线观看| 成人av免费观看| 亚洲aⅴ日韩av电影在线观看| 岛国av中文字幕| 亚洲高清在线| 久久精品一偷一偷国产| 国产真人真事毛片视频| 亚洲福利天堂| 日韩精品视频在线播放| 亚洲综合中文网| 亚洲视频自拍| 欧美日韩dvd在线观看| 毛葺葺老太做受视频| 亚洲少妇视频| 性做久久久久久免费观看欧美| 日韩精品一区二区三区电影| 欧美精品电影| 国产精品欧美一级免费| 天天人人精品| 国产资源在线观看| 欧美国产精品中文字幕| 热舞福利精品大尺度视频| 亚洲 欧美 激情 小说 另类| 成人黄色av网站在线| 成人9ⅰ免费影视网站| 国产福利视频导航| 国产裸体歌舞团一区二区| 91精品国产综合久久香蕉最新版 | 自拍偷拍亚洲色图欧美| 成年人在线观看| 国产午夜精品美女毛片视频| 欧美日韩一区二区视频在线| 午夜视频在线免费播放| 99精品桃花视频在线观看| 韩国成人一区| 猫咪在线永久网站| 国产欧美综合在线观看第十页| 青青草国产精品| 触手亚洲一区二区三区| 国产精品色噜噜| 亚洲欧洲精品一区| 精品视频在线一区二区| 一区二区三区在线不卡| 18黄暴禁片在线观看| jizz一区二区三区| 亚洲成人精品在线观看| 99精品视频在线看| 岛国精品在线| 91精品国模一区二区三区| 亚洲综合中文网| 欧美日韩一本| 在线观看国产精品91| 久久国产美女视频| 很黄很黄激情成人| 国产成人avxxxxx在线看| 中文字幕久久久久| 国产精品99久久久久久有的能看| 国产91精品入口17c| 三级av在线播放| 欧美韩日一区二区三区四区| 麻豆中文字幕在线观看| 999精品网| 在线观看不卡视频| 亚洲国产欧美日韩在线| 国产成人三级| 久久99视频免费| 综合网在线观看| 精品无码三级在线观看视频| 精品国产一区二区三区久久久久久| 久色视频在线| 亚洲午夜免费电影| 男人插女人下面免费视频| 韩国一区二区三区视频| 日韩av中文在线| 五月婷婷六月香| 欧美午夜不卡影院在线观看完整版免费| 日本免费久久高清视频| 国产欧美第一页| 国产亚洲制服色| 天堂av免费看| 亚洲wwww| 亚洲黄页网在线观看| 欧美肥妇bbwbbw| 久久精品91| 成人区精品一区二区| 国产小视频福利在线| 亚洲自拍偷拍麻豆| 性欧美videossex精品| 免费成人三级| 久久影院资源网| 国产精品xxxxxx| 99在线精品一区二区三区| 自拍偷拍一区二区三区| 五月激情久久| 精品盗摄一区二区三区| 夫妻性生活毛片| 日韩vs国产vs欧美| 久久久久一区二区| 91九色在线看| 欧美va亚洲va香蕉在线| 国产精品丝袜一区二区| 奇米综合一区二区三区精品视频| 精品日本一区二区三区| 污污片在线免费视频| 欧美男男青年gay1069videost | 国产一区网站| 欧美夜福利tv在线| 狠狠人妻久久久久久综合麻豆| 亚洲欧洲另类国产综合| 色片在线免费观看| 欧美一区二区麻豆红桃视频| 日韩av电影国产| 天天射天天操天天干| 亚洲国产精品一区二区久久恐怖片| 91pony九色| 天天做综合网| 91天堂在线视频| 黄色大片在线播放| 337p亚洲精品色噜噜噜| 黄色录像一级片| 久久国产精品99久久久久久老狼 | 国产精品福利导航| 最新日韩av| 国产日韩欧美综合精品| 1024在线看片你懂得| 亚洲国产精品成人av| 日本熟妇一区二区| 不卡av电影在线播放| 欧美日本视频在线观看| 欧美深夜视频| 国产91在线播放九色快色| 青青视频在线观| 91福利资源站| 成人免费视频入口| 极品销魂美女一区二区三区| 特级黄色录像片| 天堂av一区| 97色在线视频| 黄色大片在线看| 欧美性高清videossexo| 一区二区三区在线播放视频| 韩国女主播成人在线观看| 日韩a级黄色片| 老司机aⅴ在线精品导航| 欧美在线精品免播放器视频| 免费国产在线观看| 欧美日韩一区二区欧美激情 | 亚洲一区在线视频| 朝桐光av一区二区三区| 视频精品一区二区| 免费观看黄色的网站| 在线日韩成人| 热99精品只有里视频精品| 国产大学生校花援交在线播放 | 性色av蜜臀av| 午夜精品一区在线观看| 97人妻人人揉人人躁人人| 黄页视频在线91| 一二三四视频社区在线| 欧美丝袜激情| 91精品视频大全| ririsao久久精品一区| 一区二区三区视频在线| 国产亲伦免费视频播放| 婷婷一区二区三区| 毛片久久久久久| 成人中文字幕合集| 91人人澡人人爽人人精品| 国产在线日韩| 亚洲精品一卡二卡三卡四卡| 永久免费精品视频| 国产精品福利在线| 黄网av在线| 丝袜美腿精品国产二区| 人人妻人人澡人人爽久久av| 欧美日韩国产一级| 久久狠狠高潮亚洲精品| 综合久久一区二区三区| aaaaa一级片| 国产一区二区三区在线看麻豆| 免费成人午夜视频| 亚洲一区二区日韩| 日韩av电影免费观看| 草莓视频一区二区三区| 国产精品久久久久久久天堂| 888av在线视频| 久久精视频免费在线久久完整在线看| 天堂在线中文资源| 亚洲第一页自拍| 国产精品一级视频| 色女孩综合影院| 国产精品二区一区二区aⅴ| 中文字幕一区日韩精品欧美| 国产精品1000部啪视频| 国产99久久久国产精品免费看| www.天天射.com| 亚洲一区二区动漫| 国产www免费| 中文字幕一区二区三区在线视频 | 国产精品美女av| 国产精品扒开做爽爽爽的视频| 亚洲黄色免费三级| 午夜精品久久久久久久第一页按摩 | 一级特黄录像免费播放全99| 最近国产精品视频| 懂色一区二区三区av片| 亚洲午夜剧场| 国产精品偷伦视频免费观看国产| 中文在线最新版地址| 色综合男人天堂| 中文在线字幕免费观看| 亚洲美女av黄| 成人久久久精品国产乱码一区二区| 欧美午夜在线一二页| 成人免费视频国产免费| 色综合中文字幕国产| 中文字幕亚洲高清| 精品日本美女福利在线观看| 精品无码久久久久| 亚洲综合一二三区| 国产主播在线观看| 亚洲第一狼人社区| 日本三级中文字幕| 五月天国产精品| 久久国产精品免费看| 懂色aⅴ精品一区二区三区蜜月 | 国产黄色小视频在线| 日韩综合视频在线观看| 18免费在线视频| www.久久色.com| av在线免费观看网址| 欧美成人免费网| av福利在线导航| 91成人福利在线| 性感美女一区二区在线观看| 国产99久久精品一区二区永久免费 | 国产成人ay| 亚洲欧洲精品一区二区三区波多野1战4 | 亚洲第一页在线| 日韩欧美电影在线观看| 亚洲男人天堂2024| av每日在线更新| 操91在线视频| av资源中文在线| 国产精品99久久99久久久二8| 国产一区影院| 99国产视频| 欧美大奶一区二区| 日本欧美精品久久久| 久久精品一区二区不卡| www.xxx麻豆| 香蕉亚洲视频| 91pony九色| 99久久国产综合精品女不卡| 亚洲无人区码一码二码三码的含义| 中文字幕二三区不卡| 四虎精品免费视频| 精品久久久久久久久久| 亚洲精品毛片一区二区三区| 欧美一区二区三区影视| 性感美女一级片| 伊人青青综合网站| 欧美hdxxx| 国产精品美乳在线观看| 国产精品一区免费在线| 久久国产欧美精品| 婷婷综合亚洲| 亚洲色成人一区二区三区小说| 美女mm1313爽爽久久久蜜臀| 国产精品偷伦视频免费观看了| 久久久www成人免费毛片麻豆| 中文字幕电影av| 欧美午夜女人视频在线| 国产精品九九九九| 亚洲精品一区二三区不卡| 2024最新电影免费在线观看| 2019中文在线观看| 欧洲精品99毛片免费高清观看 | 在线播放第一页| 国产欧美视频一区二区三区| 久久久久久久伊人| 欧美人妇做爰xxxⅹ性高电影| 三级视频在线| 欧美高清在线播放| 久久亚洲国产精品尤物| 久久亚洲一区二区| 国内久久视频| 国产成人美女视频| 久久久久国产一区二区三区四区 | 91精品视频免费看| 国产99久久精品一区二区300| 中文字幕人妻熟女人妻洋洋| 激情伊人五月天久久综合| 精品欧美一区二区久久久| 性做久久久久久| 精品国产av鲁一鲁一区| 最近中文字幕2019免费| 欧美艳星kaydenkross| 精品久久精品久久| 国产专区一区| 午夜xxxxx| 国产精品大尺度| 亚洲av无码精品一区二区| 亚洲精品福利在线观看| 激情网站在线| 91牛牛免费视频| 99久久www免费| 五月天婷婷亚洲| 亚洲欧洲韩国日本视频| 在线观看免费中文字幕| 在线看国产精品| 素人一区二区三区| 视频一区二区在线观看|