【微信小程序】滑動手勢處理

題外話:

  1. 百度找了一圈沒看到好用的饲梭,自己判斷一下吧,順便分享給大家焰檩。
  2. 其實也就是判斷到底是上下左右哪個方向的滑動啦憔涉。
  3. 話說,我寫這個的時候析苫,到底是滑動兜叨,還是劃動,這兩個詞糾結了好久~

1. 在wxml文件中綁定事件

綁定三個事件:touchstart衩侥、touchend国旷、touchcancel,分別對應三個函數(shù):touchStart茫死、touchEnd跪但、touchCancel

<!--pages/today/today.wxml-->
<view style="width:100%;height:100%;" 
  bind:touchstart="touchStart" 
  bind:touchend="touchEnd" 
  bind:touchcancel="touchCancel">
</view>

如圖:

image

2. 在js文件中,對事件函數(shù)處理

2.1 在Page外部峦萎,定義參數(shù)和變量屡久;
var minOffset = 30;//最小偏移量,低于這個值不響應滑動處理
var minTime = 60;// 最小時間爱榔,單位:毫秒被环,低于這個值不響應滑動處理
var startX = 0;//開始時的X坐標
var startY = 0;//開始時的Y坐標
var startTime = 0;//開始時的毫秒數(shù)

如圖:

image
2.2 觸摸開始事件,初始化startX详幽、startY和startTime蛤售;

這里主要是在手指剛觸摸的屏幕的時候,獲取最初的x妒潭、y坐標。我們把這個當做初始坐標揣钦。

/**
   * 觸摸開始事件雳灾,初始化startX、startY和startTime
   */
  touchStart: function (e) {
    console.log('touchStart', e)
    startX = e.touches[0].pageX; // 獲取觸摸時的x坐標  
    startY = e.touches[0].pageY; // 獲取觸摸時的x坐標
    startTime = new Date().getTime();//獲取毫秒數(shù)
  },

如圖:

image
2.3 觸摸取消事件

觸摸取消事件:手指觸摸動作被打斷冯凹,如來電提醒谎亩,彈窗炒嘲。

當觸摸事件被取消中斷的時候匈庭,要重置startX夫凸、startYstartTime三個的數(shù)值阱持。

/**
   * 觸摸取消事件 (手指觸摸動作被打斷夭拌,如來電提醒,彈窗)衷咽,要將startX鸽扁、startY和startTime重置
   */
  touchCancel: function (e) {
    startX = 0;//開始時的X坐標
    startY = 0;//開始時的Y坐標
    startTime = 0;//開始時的毫秒數(shù)
  },

如圖:

image
2.4 觸摸結束事件,主要的判斷在這里镶骗;

注:這里注釋較多桶现,為了便于理解,強迫癥可以刪掉鼎姊。

簡單畫了個分析手勢類型的表格骡和,便于理解。

圖示 名稱 條件1(偏移量x或者y要大于最小偏移量) 條件2(可以判斷出是左右滑動還是上下滑動) 條件3(判斷偏移量的正負)
左劃 Math.abs(偏移量 )>= minOffset Math.abs(x偏移量) > Math.abs(y偏移量) x偏移量 < 0
右劃 同上 同左劃 x偏移量 > 0
上劃 同上 Math.abs(x偏移量) < Math.abs(y偏移量) y偏移量 < 0
下劃 同上 同上劃 y偏移量 > 0

js代碼如下:

  /**
   * 觸摸結束事件相寇,主要的判斷在這里
   */
  touchEnd: function (e) {
    console.log('touchEnd', e)
    var endX = e.changedTouches[0].pageX;
    var endY = e.changedTouches[0].pageY;
    var touchTime = new Date().getTime() - startTime;//計算滑動時間
    //開始判斷
    //1.判斷時間是否符合
    if (touchTime >= minTime) {
      //2.判斷偏移量:分X慰于、Y
      var xOffset = endX - startX;
      var yOffset = endY - startY;
      console.log('xOffset', xOffset)
      console.log('yOffset', yOffset)
      //①條件1(偏移量x或者y要大于最小偏移量)
      //②條件2(可以判斷出是左右滑動還是上下滑動)
      if (Math.abs(xOffset) >= Math.abs(yOffset) && Math.abs(xOffset) >= minOffset) {
        //左右滑動
        //③條件3(判斷偏移量的正負)
        if (xOffset < 0) {
          console.log('向左滑動')
        } else {
          console.log('向右滑動')
        }
      } else if (Math.abs(xOffset) < Math.abs(yOffset) && Math.abs(yOffset) >= minOffset) {
        //上下滑動
        //③條件3(判斷偏移量的正負)
        if (yOffset < 0) {
          console.log('向上滑動')
        } else {
          console.log('向下滑動')
        }
      }
    } else {
      console.log('滑動時間過短', touchTime)
    }
  },

如圖:

image

3. 測試滑動

嘗試滑動,查看控制臺裆赵。

如圖:

image

至此东囚,在微信小程序中,簡單的手勢滑動我們就已經(jīng)實現(xiàn)了战授。

轉自:夢游人布拿拿

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末页藻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子植兰,更是在濱河造成了極大的恐慌份帐,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件楣导,死亡現(xiàn)場離奇詭異废境,居然都是意外死亡,警方通過查閱死者的電腦和手機筒繁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門噩凹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人毡咏,你說我怎么就攤上這事驮宴。” “怎么了呕缭?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵堵泽,是天一觀的道長修己。 經(jīng)常有香客問我,道長迎罗,這世上最難降的妖魔是什么睬愤? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮纹安,結果婚禮上尤辱,老公的妹妹穿的比我還像新娘。我一直安慰自己钻蔑,他們只是感情好啥刻,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著咪笑,像睡著了一般可帽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上窗怒,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天映跟,我揣著相機與錄音,去河邊找鬼扬虚。 笑死努隙,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的辜昵。 我是一名探鬼主播荸镊,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼堪置!你這毒婦竟也來了躬存?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤舀锨,失蹤者是張志新(化名)和其女友劉穎岭洲,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坎匿,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡盾剩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了替蔬。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片告私。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖承桥,靈堂內(nèi)的尸體忽然破棺而出驻粟,到底是詐尸還是另有隱情,我是刑警寧澤快毛,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布格嗅,位于F島的核電站,受9級特大地震影響唠帝,放射性物質(zhì)發(fā)生泄漏屯掖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一襟衰、第九天 我趴在偏房一處隱蔽的房頂上張望贴铜。 院中可真熱鬧,春花似錦瀑晒、人聲如沸绍坝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽轩褐。三九已至,卻和暖如春玖详,著一層夾襖步出監(jiān)牢的瞬間把介,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工蟋座, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拗踢,地道東北人。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓向臀,卻偏偏與公主長得像巢墅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子券膀,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容