欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

微信小程序 觸控事件詳細介紹

 更新時間:2016年10月17日 15:01:14   投稿:lqh  
這篇文章主要介紹了微信小程序 觸控事件的相關資料,在開發(fā)微信小程序的時候,難免會用到這樣的功能,這里小編就幫大家梳理下相應的知識,需要的朋友可以參考下

微信小程序 觸控事件:

            微信小程序的"事件"挺有意思??戳苏f明文檔后發(fā)現它的功能很全,事件可以向父節(jié)點傳遞,而且打印這個事件的信息很透明,調試起來應該非常方便。
接下來把文檔copy過來

原文地址:https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxml/event.html

》》》什么是事件

  1. 事件是視圖層到邏輯層的通訊方式。
  2. 事件可以將用戶的行為反饋到邏輯層進行處理。
  3. 事件可以綁定在組件上,當達到觸發(fā)事件,就會執(zhí)行邏輯層中對應的事件處理函數。
  4. 事件對象可以攜帶額外信息,如id, dataset, touches。

事件的使用方式

在組件中綁定一個事件處理函數。

如bindtap,當用戶點擊該組件的時候會在該頁面對應的Page中找到相應的事件處理函數。

<view id="tapTest" data-hi="MINA" bindtap="tapName"> Click me! </view> 

在相應的Page定義中寫上相應的事件處理函數,參數是event。

Page({ 
 tapName: function(event) { 
 console.log(event) 
 } 
}) 

可以看到log出來的信息大致如下:

{ 
"type": "tap", 
"timeStamp": 1252, 
"target": { 
 "id": "tapTest", 
 "offsetLeft": 0, 
 "offsetTop": 0, 
 "dataset": { 
 "hi": "MINA" 
 } 
}, 
"currentTarget": { 
 "id": "tapTest", 
 "offsetLeft": 0, 
 "offsetTop": 0, 
 "dataset": { 
 "hi": "MINA" 
 } 
}, 
"touches": [{ 
 "pageX": 30, 
 "pageY": 12, 
 "clientX": 30, 
 "clientY": 12, 
 "screenX": 112, 
 "screenY": 151 
}], 
"detail": { 
 "x": 30, 
 "y": 12 
} 
} 

事件詳解

事件分類

事件分為冒泡事件和非冒泡事件:

冒泡事件:當一個組件上的事件被觸發(fā)后,該事件會向父節(jié)點傳遞。

非冒泡事件:當一個組件上的事件被觸發(fā)后,該事件不會向父節(jié)點傳遞。

》》》事件分類

  1. touchstart 手指觸摸
  2. touchmove 手指觸摸后移動
  3. touchcancel 手指觸摸動作被打斷,如彈窗和來電提醒
  4. touchend 手指觸摸動作結束
  5. tap 手指觸摸后離開
  6. longtap 手指觸摸后后,超過350ms離開

》》》事件綁定

事件綁定的寫法同組件的屬性,以 key、value 的形式。

  1. key 以bind或catch開頭,然后跟上事件的類型,如bindtap, catchtouchstart
  2. value 是一個字符串,需要在對應的 Page 中定義同名的函數。不然當觸發(fā)事件的時候會報錯。 bind事件綁定不會阻止冒泡事件向上冒泡,catch事件綁定可以阻止冒泡事件向上冒泡。

上面簡單介紹了小程序事件基礎,是時候彰顯"事件"的威力:

  1. 單擊(tap)
  2. 雙擊(dbtap)
  3. 長按(longtap)
  4. 滑動
  5. 多點觸控

1.單擊

單擊事件由touchstart、touchend組成,touchend后觸發(fā)tap事件。

 

<view>
 <button type="primary" bindtouchstart="mytouchstart" bindtouchend="mytouchend" bindtap="mytap">點我吧</button>
</view>
mytouchstart: function(e){ console.log(e.timeStamp + '- touch start')
},mytouchend: function(e){ console.log(e.timeStamp + '- touch end')
},mytap: function(e){ console.log(e.timeStamp + '- tap')
}

2.雙擊

雙擊事件由兩個單擊事件組成,兩次間隔時間小于300ms認為是雙擊;微信官方文檔沒有雙擊事件,需要開發(fā)者自己定義處理。

 

<view>
 <button type="primary" bindtap="mytap">點我吧</button>
</view>


 

 3.長按

長按事件手指觸摸后,超過350ms再離開。

 

<view>
 <button type="primary" bindtouchstart="mytouchstart" bindlongtap="mylongtap" 
 bindtouchend="mytouchend" bindtap="mytap">點我吧</button>
</view>
mytouchstart: function(e){ console.log(e.timeStamp + '- touch start')
},//長按事件mylongtap: function(e){ console.log(e.timeStamp + '- long tap')
 },mytouchend: function(e){ console.log(e.timeStamp + '- touch end')
},mytap: function(e){ console.log(e.timeStamp + '- tap')
}

單擊、雙擊、長按屬于點觸事件,會觸發(fā)touchstart、touchend、tap事件,touchcancel事件只能在真機模擬,不多說了。

事件 觸發(fā)順序
單擊 touchstart → touchend → tap
雙擊 touchstart → touchend → tap → touchstart → touchend → tap
長按 touchstart → longtap → touchend → tap

4.滑動

手指觸摸屏幕并移動,為了簡化起見,下面以水平滑動和垂直滑動為例。 滑動事件由touchstart、touchmove、touchend組成

 

坐標圖:

 

  1. 以屏幕左上角為原點建立直角坐標系。第四象限為手機屏幕,Y軸越往下坐標值越大(注意跟數學象限的區(qū)別)。
  2. 假設A點為touchstart事件觸摸點,坐標為A(ax,ay),然后手指向上滑動到點B(bx,by),就滿足條件by < ay;
  3. 同理,向右滑動到C(cx,cy),滿足cx > ax;向下滑動到D(dx,dy),滿足dy > ay;向左移動到E(ex,ey)滿足ex < ax.
  4. 計算線段AB在Y軸上投影長度為m,在X軸上的投影長度為n
  5. 計算r = m/n,如果r > 1,視為向上滑動。
  6. 同理計算線段AC,AD,AE在Y軸投影長度與X軸的投影長度之比,得出向右向下向左的滑動。

以上沒考慮r為1的情況。

<view>
 <button type="primary" bindtouchstart="mytouchstart" bindtouchmove="mytouchmove">點我吧</button>
</view>


5.多點觸控

由于模擬器尚不支持多點觸控,內測開放后,繼續(xù)補充。

 感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

  • JS 中 new 的作用詳細

    JS 中 new 的作用詳細

    這篇文章主要給大家介紹的是JS 中 new 的作用,大部分講 new 的文章會從面向對象的思路講起,,今天的文章我們就先來舉例說明問題所在,然后詳細解說,感興趣的小伙伴可以參考一下哦
    2021-10-10
  • 總結JavaScript中BigIn函數常見的屬性

    總結JavaScript中BigIn函數常見的屬性

    本文基于JavaScript基礎,介紹了 BigInt 函數,常見的屬性,通過 BigInt 函數進行數字運算符的比較。布爾運算等等,通過按案例的分析進行詳細的講解,需要的朋友可以參考一下
    2021-10-10
  • 微信小程序 wx:for的使用實例詳解

    微信小程序 wx:for的使用實例詳解

    這篇文章主要介紹了微信小程序 wx:for的使用實例詳解的相關資料,需要的朋友可以參考下
    2017-04-04
  • js前端實現word?excel?pdf?ppt?mp4圖片文本等文件預覽

    js前端實現word?excel?pdf?ppt?mp4圖片文本等文件預覽

    這篇文章主要為大家介紹了js前端實現word?excel?pdf?ppt?mp4圖片文本等文件預覽示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • 在博客園博文中添加自定義右鍵菜單的方法詳解

    在博客園博文中添加自定義右鍵菜單的方法詳解

    本文是DOM鼠標事件的一個實際應用。查看博客園的博客文章時,有的文章非常長,卻沒有回到頂部按鈕;而且文章的點贊和評論都在文章最底部,使用時并不方便。所以使用自定義右鍵菜單來實現回到頂部、點贊、評論這三個主要功能,需要的朋友可以參考下
    2020-02-02
  • JavaScript設計模式之單例模式應用場景案例詳解

    JavaScript設計模式之單例模式應用場景案例詳解

    這篇文章主要為大家介紹了JavaScript中單例模式的應用場景案例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • 讓chatGPT教你如何使用taro創(chuàng)建mbox

    讓chatGPT教你如何使用taro創(chuàng)建mbox

    這篇文章主要為大家介紹了讓chatGPT教你如何使用taro創(chuàng)建mbox實現實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • JS屬性scrollTop?clientHeight?scrollHeight理解學習

    JS屬性scrollTop?clientHeight?scrollHeight理解學習

    這篇文章主要為大家介紹了JS屬性scrollTop?clientHeight?scrollHeight理解學習,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • umi插件開發(fā)仿dumi項目實現基礎路由解析

    umi插件開發(fā)仿dumi項目實現基礎路由解析

    這篇文章主要為大家介紹了umi插件開發(fā)仿dumi項目實現基礎路由解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 微信小程序之前臺循環(huán)數據綁定

    微信小程序之前臺循環(huán)數據綁定

    這篇文章主要介紹了微信小程序之前臺循環(huán)數據綁定的相關資料,這里提供實例幫助大家學習理解這部分內容,需要的朋友可以參考下
    2017-08-08

最新評論