github鏈接:https://github.com/antilmid/gesture-version1.0
手勢(shì)庫(Gesture JS)
0x00前言
Gesture JS是一款事件向的JS庫,里面針對(duì)鼠標(biāo)(手指)滑動(dòng)后的痕跡提取成手勢(shì)豪直,為頁面增加一些快速的操作倡怎,如手勢(shì)(手指)滑動(dòng) 下 ->右 我們可以提取為返回上一步,這樣就可以讓前端的交互更加新穎和舒適晶府。順便一說,本版本為測(cè)試版,請(qǐng)勿在大型項(xiàng)目中應(yīng)用,具體請(qǐng)等待穩(wěn)定版筒饰。
0x01Guesture開始
開始很簡單,將dom綁定進(jìn)去就可以了羹呵。
var config = {
? ? isPreventedDefault:true, // 是否阻止默認(rèn)事件
? ? samplingSpeed:6 // 采樣半徑
}
var gestureObj = new Gesture(dom, config);
我們可以看到骂际,在使用的時(shí)候需要傳一個(gè)配置項(xiàng)config,這個(gè)參數(shù)是可選的冈欢,其中isPreventedDefault配置是否阻止默認(rèn)事件歉铝,samplingSpeed則是采樣半徑(也是采樣距離頻率),這個(gè)值越小凑耻,采樣越多太示,偏差的噪點(diǎn)越大,這個(gè)值越大香浩,采樣分辨率越低类缤,適中就可以。
0x02GestureJS方法與屬性
==========方法============
mergePath : 路徑合并方法
break : 銷毀綁定方法
$start : 移動(dòng)開始事件
$move : 移動(dòng)中事件
$end : 移動(dòng)結(jié)束事件
==========屬性============
dom : 綁定的dom對(duì)象
config : 配置項(xiàng)
ansicdata :手勢(shì)數(shù)據(jù)
0x03一個(gè)簡單的Gesture實(shí)例
var gestureObj = new Gesture(dom);
gestureObj.$end = function (e) {
var gesPoint = gestureObj.ansicdata.dir8;
var msg = "";
gesPoint = gestureObj.mergePath(gesPoint);
for(var i=0;i<gesPoint.length;i++){
msg=msg+gesPoint[i]+"? ";
}
console.log("您的手勢(shì)為:"+msg);
}
0x04下一代Gesture展望
下一個(gè)版本邻吭,將會(huì)是全新的版本餐弱,請(qǐng)期待Gesture2.0吧! (本版本有問題請(qǐng)告訴我囱晴,我們將會(huì)讓他變得更加穩(wěn)定膏蚓,也歡迎大家加入開發(fā)行列)
將增加多點(diǎn)觸控手勢(shì)(放大,縮小等)
增加默認(rèn)手勢(shì)判別向量組
讓他變得更加穩(wěn)定
方法詳解
mergePath(路徑點(diǎn)合并)
該方法是Gesture原型上的方法畸写,用于合并我們得到ansicdata中的dir4和dir8向量組降允,本身也能對(duì)數(shù)組中相同的量合并,并且忽略中間的奇點(diǎn)艺糜。
mergePath(arr剧董, [freq])
本身接受兩個(gè)參數(shù),其中必須傳入一個(gè)arr數(shù)組破停,freq是奇點(diǎn)判別頻率翅楼,默認(rèn)為2,就是相同數(shù)少于2個(gè)就被列為奇點(diǎn)真慢。
var arr = [1,1,1,0,1,1,1,2,2,2,2,0,0,2,2];
Gesture.prototype.mergePath(arr)? //返回[1,2]
break(銷毀創(chuàng)建)
該方法用于銷毀已綁定的元素毅臊,將其解除綁定。請(qǐng)?jiān)诓挥脮r(shí)主動(dòng)使用該函數(shù)解除綁定黑界。
$start,$move和$end事件
由于該庫綁定后代碼本身也占用相應(yīng)的dom事件管嬉,為了讓用戶能夠加入相關(guān)的事件,提供了一個(gè)事件接口朗鸠,每個(gè)函數(shù)都會(huì)傳入兩個(gè)參數(shù)(e, obj)蚯撩,e是代表事件對(duì)象,obj則是gesture對(duì)象烛占。
var gestureObj = new Gesture(dom);
gestureObj.$start = function(e,g){
console.log(e,g);
}
ansicdata手勢(shì)數(shù)據(jù)
ansicdata里面包含了point胎挎,dir4沟启,dir8。
point是指你手指劃過的所有點(diǎn)的集合犹菇。
dir4是手指劃過的點(diǎn)的四方向數(shù)據(jù)集合德迹,每個(gè)方向的判別都是相對(duì)于前一個(gè)點(diǎn)。
dir8是手指劃過的點(diǎn)的八方向數(shù)據(jù)集合揭芍,每個(gè)方向的判別都是相對(duì)于前一個(gè)點(diǎn)胳搞。