亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

微信小程序 觸控事件詳細(xì)介紹

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

微信小程序 觸控事件:

            微信小程序的"事件"挺有意思。看了說(shuō)明文檔后發(fā)現(xiàn)它的功能很全,事件可以向父節(jié)點(diǎn)傳遞,而且打印這個(gè)事件的信息很透明,調(diào)試起來(lái)應(yīng)該非常方便。
接下來(lái)把文檔copy過(guò)來(lái)

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

》》》什么是事件

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

事件的使用方式

在組件中綁定一個(gè)事件處理函數(shù)。

如bindtap,當(dāng)用戶點(diǎn)擊該組件的時(shí)候會(huì)在該頁(yè)面對(duì)應(yīng)的Page中找到相應(yīng)的事件處理函數(shù)。

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

在相應(yīng)的Page定義中寫上相應(yīng)的事件處理函數(shù),參數(shù)是event。

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

可以看到log出來(lái)的信息大致如下:

{ 
"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 
} 
} 

事件詳解

事件分類

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

冒泡事件:當(dāng)一個(gè)組件上的事件被觸發(fā)后,該事件會(huì)向父節(jié)點(diǎn)傳遞。

非冒泡事件:當(dāng)一個(gè)組件上的事件被觸發(fā)后,該事件不會(huì)向父節(jié)點(diǎn)傳遞。

》》》事件分類

  1. touchstart 手指觸摸
  2. touchmove 手指觸摸后移動(dòng)
  3. touchcancel 手指觸摸動(dòng)作被打斷,如彈窗和來(lái)電提醒
  4. touchend 手指觸摸動(dòng)作結(jié)束
  5. tap 手指觸摸后離開(kāi)
  6. longtap 手指觸摸后后,超過(guò)350ms離開(kāi)

》》》事件綁定

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

  1. key 以bind或catch開(kāi)頭,然后跟上事件的類型,如bindtap, catchtouchstart
  2. value 是一個(gè)字符串,需要在對(duì)應(yīng)的 Page 中定義同名的函數(shù)。不然當(dāng)觸發(fā)事件的時(shí)候會(huì)報(bào)錯(cuò)。 bind事件綁定不會(huì)阻止冒泡事件向上冒泡,catch事件綁定可以阻止冒泡事件向上冒泡。

上面簡(jiǎn)單介紹了小程序事件基礎(chǔ),是時(shí)候彰顯"事件"的威力:

  1. 單擊(tap)
  2. 雙擊(dbtap)
  3. 長(zhǎng)按(longtap)
  4. 滑動(dòng)
  5. 多點(diǎn)觸控

1.單擊

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

 

<view>
 <button type="primary" bindtouchstart="mytouchstart" bindtouchend="mytouchend" bindtap="mytap">點(diǎn)我吧</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.雙擊

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

 

<view>
 <button type="primary" bindtap="mytap">點(diǎn)我吧</button>
</view>


 

 3.長(zhǎng)按

長(zhǎng)按事件手指觸摸后,超過(guò)350ms再離開(kāi)。

 

<view>
 <button type="primary" bindtouchstart="mytouchstart" bindlongtap="mylongtap" 
 bindtouchend="mytouchend" bindtap="mytap">點(diǎn)我吧</button>
</view>
mytouchstart: function(e){ console.log(e.timeStamp + '- touch start')
},//長(zhǎng)按事件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')
}

單擊、雙擊、長(zhǎng)按屬于點(diǎn)觸事件,會(huì)觸發(fā)touchstart、touchend、tap事件,touchcancel事件只能在真機(jī)模擬,不多說(shuō)了。

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

4.滑動(dòng)

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

 

坐標(biāo)圖:

 

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

以上沒(méi)考慮r為1的情況。

<view>
 <button type="primary" bindtouchstart="mytouchstart" bindtouchmove="mytouchmove">點(diǎn)我吧</button>
</view>


5.多點(diǎn)觸控

由于模擬器尚不支持多點(diǎn)觸控,內(nèi)測(cè)開(kāi)放后,繼續(xù)補(bǔ)充。

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

相關(guān)文章

  • JS 中 new 的作用詳細(xì)

    JS 中 new 的作用詳細(xì)

    這篇文章主要給大家介紹的是JS 中 new 的作用,大部分講 new 的文章會(huì)從面向?qū)ο蟮乃悸分v起,,今天的文章我們就先來(lái)舉例說(shuō)明問(wèn)題所在,然后詳細(xì)解說(shuō),感興趣的小伙伴可以參考一下哦
    2021-10-10
  • 總結(jié)JavaScript中BigIn函數(shù)常見(jiàn)的屬性

    總結(jié)JavaScript中BigIn函數(shù)常見(jiàn)的屬性

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

    微信小程序 wx:for的使用實(shí)例詳解

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

    js前端實(shí)現(xiàn)word?excel?pdf?ppt?mp4圖片文本等文件預(yù)覽

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

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

    本文是DOM鼠標(biāo)事件的一個(gè)實(shí)際應(yīng)用。查看博客園的博客文章時(shí),有的文章非常長(zhǎng),卻沒(méi)有回到頂部按鈕;而且文章的點(diǎn)贊和評(píng)論都在文章最底部,使用時(shí)并不方便。所以使用自定義右鍵菜單來(lái)實(shí)現(xiàn)回到頂部、點(diǎn)贊、評(píng)論這三個(gè)主要功能,需要的朋友可以參考下
    2020-02-02
  • JavaScript設(shè)計(jì)模式之單例模式應(yīng)用場(chǎng)景案例詳解

    JavaScript設(shè)計(jì)模式之單例模式應(yīng)用場(chǎng)景案例詳解

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

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

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

    JS屬性scrollTop?clientHeight?scrollHeight理解學(xué)習(xí)

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

    umi插件開(kāi)發(fā)仿dumi項(xiàng)目實(shí)現(xiàn)基礎(chǔ)路由解析

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

    微信小程序之前臺(tái)循環(huán)數(shù)據(jù)綁定

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

最新評(píng)論