在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 應用軟件教程 > 詳細頁面

小程序開發之基礎篇滑動設置(10)

小程序開發之基礎篇滑動設置(10)

更新時間:2025-10-03 文章作者:未知 信息來源:網絡 閱讀次數:

微信小程序,簡稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應用,它實現了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應用。小程序是一種不用下載就能使用的應用,也是一...
微信小程序,簡稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應用,它實現了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應用。小程序是一種不用下載就能使用的應用,也是一項門檻非常高的創新,經過將近兩年的發展,已經構造了新的小程序開發環境和開發者生態。
在實際的移動應用程序交互方式中,最常見的就是滑動操作。像左右滑動切換頁面,手指張開來放大圖片等,都是由滑動操作來完成的。

微信小程序默認提供的相關事件如下:


觸摸相關操作事件

tap對應點擊操作,還提供了longtap來支持長按操作,這些都比較簡單,就不多做講述。
touchmove對應滑動操作,通過bindtouchmove即可響應滑動操作。

//wxml
<view id="id" bindtouchmove="handletouchmove" style = "width : 100px; height : 100px; background : #167567;">
</view>

//js
Page({
  handletouchmove: function(event) {
    console.log(event)
  },
})

當按住view標簽并滑動鼠標時,會不停的觸發滑動事件,直到放開鼠標,當鼠標移出view標簽區域后依然會觸發事件

拖拽操作

通過監聽滑動事件,可以實現一些實用的功能,比如用過iphone的用戶都知道assistivetouch,一個桌面上的快捷按鈕,可以將按鈕拖動到桌面的任意位置。為了方便,這里就用一個圓形來代表該按鈕。

//wxml
<view id="id" class = "ball" bindtouchmove="handletouchmove" style = "width : 60px; height : 60px; background : #545345;">
</view>

//wxss
.ball {
  box-shadow:2px 2px 10px #AAA;
  border-radius: 20px;
  position: absolute; 
}

//js
Page({
  handletouchmove: function(event) {
    console.log(event)
  },
})


視圖跟隨


好吧,按鈕丑了點,這不是重點。拖拽操作的實現思路也很簡單,當觸發滑動事件時,event對象會包含當前觸摸位置的坐標信息,可以通過event.touches[0].pageXevent.touches[0].pageY 來獲取,為什么touches是數組呢,答案是為了支持多點觸控(在電腦上不知道如何模擬多點觸控)。接下來將按鈕的位置設置為觸摸位置,應該就能實現預期效果了,讓我們試試看。

在Page中定義按鈕的位置數據ballBottom和ballRight,并綁定到view的對應屬性中。

//wxml
<view id="id" class = "ball" bindtouchmove="handletouchmove" style = "width : 60px; height : 60px; background : #545345; top:{{ballTop}}px; left: {{ballLeft}}px">
</view>

//js
Page({
  data: {
    ballTop: 0,
    ballLeft: 0,
  },
  handletouchmove: function(event) {
    console.log(event)
  },
})

接下來在handletouchmove方法中更新按鈕的位置數據

handletouchmove: function(event) {
  console.log(event)
  this.setData ({
    ballTop: event.touches[0].pageY,
    ballLeft: event.touches[0].pageX,
  });
},

運行發現基本可以實現效果,不過有兩個問題,一是會將按鈕拖出屏幕邊緣,二是按鈕始終在鼠標右下方。
接下來加入對屏幕邊界的判斷并對按鈕位置進行修正。其中屏幕大小可以通過wx.getSystemInfo來獲取。
完整代碼如下:

Page({
  data: {
    ballTop: 0,
    ballLeft: 0,
    screenHeight:0,
    screenWidth:0

  },
  onLoad: function () {
      //獲取屏幕寬高
    var _this = this;
    wx.getSystemInfo({
     success: function (res) {
        _this.setData({
          screenHeight: res.windowHeight,
          screenWidth: res.windowWidth,
        });
      }
    });
  },
  handletouchmove: function(event) {
    console.log(event)
    let pageX = event.touches[0].pageX;
    let pageY = event.touches[0].pageY;
    //屏幕邊界判斷
    if (pageX < 30 || pageY < 30)
      return;
    if (pageX > this.data.screenWidth - 30)
      return;
    if (pageY > this.data.screenHeight - 30)
      return;
    this.setData ({
      ballTop: event.touches[0].pageY - 30,
      ballLeft: event.touches[0].pageX - 30,
    });
  },
})

再次運行,一切ok。

手勢識別

通過處理滑動操作可以識別各種手勢操作,如左右滑動等。思路也很簡單,通過綁定touchstart和touchmove事件,然后對坐標信息進行識別計算即可(如current.PageX - last.PageX < 0則認為是向左滑動)

//wxml
<view id="id" class = "ball" bindtap = "handletap" bindtouchstart = "handletouchtart" bindtouchmove="handletouchmove" style = "width : 100%px; height : 40px;">
{{text}}
</view>

//js
Page({
  data: {
    lastX: 0,
    lastY: 0,
    text : "沒有滑動",
  },
  handletouchmove: function(event) {
    console.log(event)
    let currentX = event.touches[0].pageX
    let currentY = event.touches[0].pageY

    console.log(currentX)
    console.log(this.data.lastX)
    let text = ""
    if ((currentX - this.data.lastX) < 0)
      text = "向左滑動"
    else if (((currentX - this.data.lastX) > 0))
      text = "向右滑動"

    //將當前坐標進行保存以進行下一次計算
    this.data.lastX = currentX
    this.data.lastY = currentY
    this.setData({
      text : text,
    });
  },

  handletouchtart:function(event) { 
    console.log(event)
    this.data.lastX = event.touches[0].pageX
    this.data.lastY = event.touches[0].pageY
  },
  handletap:function(event) {
    console.log(event)
  },
})

運行程序,當向左滑動時會view會顯示"向左滑動", 向右同理。

同時識別左右滑動和上下互動
有時候希望同時識別左右和上下滑動,可以通過比較X軸上的差值和Y軸上的差值,較大的差值為滑動方向。

 handletouchmove: function(event) {
    console.log(event)
    let currentX = event.touches[0].pageX
    let currentY = event.touches[0].pageY
    let tx = currentX - this.data.lastX
    let ty = currentY - this.data.lastY
    let text = ""
    //左右方向滑動
    if (Math.abs(tx) > Math.abs(ty)) {
      if (tx < 0)
        text = "向左滑動"
      else if (tx > 0)
        text = "向右滑動"
    }
    //上下方向滑動
    else {
      if (ty < 0)
        text = "向上滑動"
      else if (ty > 0)
        text = "向下滑動"
    }

    //將當前坐標進行保存以進行下一次計算
    this.data.lastX = currentX
    this.data.lastY = currentY
    this.setData({
      text : text,
    });
  },

在實際應用中,當某種手勢被觸發后,在用戶沒有放開鼠標或手指前,會一直識別為該手勢。比如當用戶觸發左滑手勢后,這時再向下滑動,仍要按照左滑手勢來處理。
可以定義一個標記來記錄第一次識別到的手勢,如果已識別出手勢,后續的滑動操作就可以忽略,直到用戶放開鼠標或手指。放開鼠標或手指操作可以通過綁定handletouchend事件來處理。

Page({
  data: {
    lastX: 0,
    lastY: 0,
    text : "沒有滑動",
    currentGesture: 0,
  },
  handletouchmove: function(event) {
    console.log(event)
    if (this.data.currentGesture != 0){
      return
    }
    let currentX = event.touches[0].pageX
    let currentY = event.touches[0].pageY
    let tx = currentX - this.data.lastX
    let ty = currentY - this.data.lastY
    let text = ""
    //左右方向滑動
    if (Math.abs(tx) > Math.abs(ty)) {
      if (tx < 0) {
        text = "向左滑動"
        this.data.currentGesture = 1
      }
      else if (tx > 0) {
        text = "向右滑動"
        this.data.currentGesture = 2
      }

    }
    //上下方向滑動
    else {
      if (ty < 0){
        text = "向上滑動"
        this.data.currentGesture = 3

      }
      else if (ty > 0) {
        text = "向下滑動"
        this.data.currentGesture = 4
      }

    }

    //將當前坐標進行保存以進行下一次計算
    this.data.lastX = currentX
    this.data.lastY = currentY
    this.setData({
      text : text,
    });
  },

  handletouchtart:function(event) { 
    console.log(event)
    this.data.lastX = event.touches[0].pageX
    this.data.lastY = event.touches[0].pageY
  },
  handletouchend:function(event) {
    console.log(event)
    this.data.currentGesture = 0
    this.setData({
      text : "沒有滑動",
    });
  },
})

多點觸控
由于多點觸控需要真機來測試,而我的appid還在申請中,只能延后講解了。這里大概提下思路,比如手指張開的操作,可以分別判斷兩個觸摸點的移動方向,比如靠左的觸摸點向左滑動,靠右的觸摸點向右滑動,即可判定為手指張開操作。

以上就是小程序開發之基礎篇滑動操作(10)的詳細內容,更多請關注php中文網其它相關文章!


小程序是一種不需要下載安裝即可使用的應用,它實現了應用“觸手可及”的夢想,用戶掃一掃或者搜一下即可打開應用。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 久久艹这里只有精品| 天天夜碰日日摸日日澡性色av| 日本一道本久久| 一本之道在线视频| 国产精品视频中文字幕| 日本www高清视频| 激情六月丁香婷婷| 免费毛片小视频| 青青草视频在线视频| 国产人妻互换一区二区| 久久久久久久久久毛片| 潘金莲激情呻吟欲求不满视频| 日本成人黄色网| 成人在线免费播放视频| 免费看a级黄色片| 妺妺窝人体色www在线观看| 日日碰狠狠躁久久躁婷婷| 91看片就是不一样| 99久久免费观看| 精品人妻少妇一区二区| 僵尸世界大战2 在线播放| 日韩中文字幕在线视频观看 | 黄色国产一级视频| 国产3p露脸普通话对白| 波多野结衣之无限发射| 国产a级一级片| 已婚少妇美妙人妻系列| 岛国av免费在线| 日韩av自拍偷拍| 亚洲精品天堂成人片av在线播放| 国产69精品久久久久999小说| 男女私大尺度视频| 国产亚洲精品网站| 男女污污的视频| 国产性生交xxxxx免费| 妺妺窝人体色www在线小说| 国产男女无遮挡| 在线看的黄色网址| 超碰超碰超碰超碰超碰| 最新av在线免费观看| 无码人妻精品一区二区蜜桃网站| 欧美乱大交xxxxx潮喷l头像| 免费在线观看毛片网站| 国产精品av免费| 精品久久一二三| 拔插拔插华人永久免费| 日韩欧美国产片| 福利视频免费在线观看| 97公开免费视频| 中文字幕色呦呦| 黄色片视频在线免费观看| xxx中文字幕| 那种视频在线观看| 青娱乐国产精品视频| 激情五月宗合网| 91视频福利网| 日韩免费毛片视频| 午夜久久久久久久久久久| 欧美日韩中文在线视频| 超碰中文字幕在线观看| av动漫在线免费观看| 日本精品久久久久中文字幕| 国产又黄又猛视频| 91亚洲一区二区| 爆乳熟妇一区二区三区霸乳| 性生生活大片免费看视频| 欧美,日韩,国产在线| 色一情一区二区三区| 蜜臀av.com| 欧美视频国产视频| 国产精品动漫网站| 黄色片网址在线观看| 亚洲小说欧美另类激情| 色综合色综合色综合色综合| 色欲色香天天天综合网www| 欧美专区第二页| 免费激情视频在线观看| 毛片在线播放视频| 波多野结衣激情| 国产又粗又长又爽又黄的视频| 久久精品一区二| 欧美精品一区免费| 超碰超碰超碰超碰超碰| 成年人免费观看的视频| 三级a在线观看| 亚洲熟妇av一区二区三区| av在线播放天堂| 欧美这里只有精品| 日本wwwcom| 日韩久久久久久久久久久久| 国产性生活免费视频| 日韩视频 中文字幕| 日本一二三区视频在线| 米仓穗香在线观看| 91手机视频在线| 91香蕉视频在线观看视频| 亚洲综合20p| 日韩av福利在线观看| 五月婷婷之婷婷| 久久黄色片网站| 中文字幕1234区| 波多野结衣50连登视频| 日韩中文字幕三区| 日本精品一区在线观看| 激情五月开心婷婷| 可以免费观看av毛片| 奇米影音第四色| 免费一区二区三区在线观看 | 国产成年人视频网站| 亚洲综合av在线播放| 911福利视频| 性欧美在线视频| 国产一二三四五| 国产精品国产亚洲精品看不卡 | 欧美亚洲国产成人| 又色又爽又高潮免费视频国产| 一本岛在线视频| 亚洲黄色网址在线观看| 国产一区二区四区| 久久久999视频| 午夜免费福利在线| 只有这里有精品| 99在线精品免费视频| 亚洲人成无码www久久久| 亚洲人视频在线| 国产手机免费视频| 亚洲少妇久久久| 秋霞在线一区二区| 人妻有码中文字幕| 善良的小姨在线| 无罩大乳的熟妇正在播放| 亚洲成人福利在线观看| 超碰免费在线公开| 成人毛片一区二区| 久久久久xxxx| 男女啪啪免费视频网站| 国产美女视频免费看| 国产亚洲综合视频| 久久久精品高清| 国产原创popny丨九色| 欧美激情第3页| 国产av第一区| 茄子视频成人免费观看| 国产精品一区在线免费观看| 六月激情综合网| 久久久成人精品一区二区三区 | 北条麻妃亚洲一区| 欧美v在线观看| 97超碰免费观看| 久久久精品在线视频| 毛片在线视频观看| 日韩成人精品视频在线观看| www插插插无码视频网站| 国产精品嫩草影视| 热久久精品免费视频| 日本中文字幕亚洲| 欧美 国产 精品| 国产又黄又猛的视频| 欧美日韩在线成人| 99爱视频在线| av在线观看地址| 麻豆传媒网站在线观看| 亚洲五月激情网| 免费一级特黄录像| 国产三区在线视频| 老太脱裤让老头玩ⅹxxxx| 天堂av2020| 国产激情在线观看视频| 国产精品三级一区二区| 国产又粗又长又爽又黄的视频| 天天色综合社区| 久草在在线视频| 日日摸日日碰夜夜爽av| 欧美三级在线观看视频| 国产a级黄色大片| 亚洲图片 自拍偷拍| 不卡中文字幕在线观看| 在线观看亚洲色图| www.久久久精品| 午夜一级免费视频| 欧美又黄又嫩大片a级| 一级黄色片国产| 亚洲综合在线一区二区| 99久久免费观看| www黄色av| 伊人色在线观看| 成人国产在线看| 蜜臀av午夜一区二区三区| 一本岛在线视频| av中文字幕av| 国产a级一级片| 911av视频| 欧美 日韩 亚洲 一区| 大香煮伊手机一区| 欧美国产在线一区| 精品这里只有精品| 国产精品区在线| 欧美黑人在线观看| 男人插女人下面免费视频| 91嫩草国产丨精品入口麻豆|