91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信小程序如何實現圖片雙滑縮放大小

發布時間:2022-03-15 10:55:10 來源:億速云 閱讀:1781 作者:小新 欄目:開發技術

這篇文章主要介紹了微信小程序如何實現圖片雙滑縮放大小 ,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

在做小程序開發的過程中,后端傳來一張圖片地圖,需要實現雙手指滑動,使圖片縮放,最終得出了一下代碼:

  js :

   Page({
  data: {
    touch: {
      distance: 0,
      scale: 1,
      baseWidth: null,
      baseHeight: null,
      scaleWidth: null,
      scaleHeight: null
    }
  },
  touchStartHandle(e) {
    // 單手指縮放開始,也不做任何處理 
    if (e.touches.length == 1) {
      console.log("單滑了")
      return
    }
    console.log('雙手指觸發開始')
    // 注意touchstartCallback 真正代碼的開始 
    // 一開始我并沒有這個回調函數,會出現縮小的時候有瞬間被放大過程的bug 
    // 當兩根手指放上去的時候,就將distance 初始化。 
    let xMove = e.touches[1].clientX - e.touches[0].clientX;
    let yMove = e.touches[1].clientY - e.touches[0].clientY;
    let distance = Math.sqrt(xMove * xMove + yMove * yMove);
    this.setData({
      'touch.distance': distance,
    })
  },
  touchMoveHandle(e) {
    let touch = this.data.touch
    // 單手指縮放我們不做任何操作 
    if (e.touches.length == 1) {
      console.log("單滑了");
      return
    }
    console.log('雙手指運動開始')
    let xMove = e.touches[1].clientX - e.touches[0].clientX;
    let yMove = e.touches[1].clientY - e.touches[0].clientY;
    // 新的 ditance 
    let distance = Math.sqrt(xMove * xMove + yMove * yMove);
    let distanceDiff = distance - touch.distance;
    let newScale = touch.scale + 0.005 * distanceDiff
    // 為了防止縮放得太大,所以scale需要限制,同理最小值也是 
    if (newScale >= 2) {
      newScale = 2
    }
    if (newScale <= 0.6) {
      newScale = 0.6
    }
    let scaleWidth = newScale * touch.baseWidth
    let scaleHeight = newScale * touch.baseHeight
    // 賦值 新的 => 舊的 
    this.setData({
      'touch.distance': distance,
      'touch.scale': newScale,
      'touch.scaleWidth': scaleWidth,
      'touch.scaleHeight': scaleHeight,
      'touch.diff': distanceDiff
    })
  },
  load: function (e) {
    // bindload 這個api是<image>組件的api類似<img>的onload屬性 
    this.setData({
      'touch.baseWidth': e.detail.width,
      'touch.baseHeight': e.detail.height,
      'touch.scaleWidth': e.detail.width,
      'touch.scaleHeight': e.detail.height
    });
  }
})

然后將新獲得的圖片寬度和高度賦值給圖片即可實現滑動縮放

  wxml:

<image mode='scaleToFill' src='../../../images/01.jpg' bindtouchstart='touchStartHandle' bindtouchmove='touchMoveHandle' bindload='load' style="width: {{ touch.scaleWidth }}px;height: {{ touch.scaleHeight }}px"></image>

感謝你能夠認真閱讀完這篇文章,希望小編分享的“微信小程序如何實現圖片雙滑縮放大小 ”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

瑞安市| 教育| 贵阳市| 太仆寺旗| 安丘市| 宣武区| 新竹市| 吉木萨尔县| 淅川县| 乐安县| 晋中市| 石泉县| 武宁县| 股票| 恩施市| 商南县| 辉南县| SHOW| 巴彦县| 浠水县| 宁明县| 三河市| 鲁山县| 桃源县| 西充县| 南澳县| 许昌市| 绥滨县| 尚义县| 正镶白旗| 西青区| 称多县| 安岳县| 兴山县| 平遥县| 嘉黎县| 监利县| 海兴县| 宜良县| 大安市| 武功县|