Web裏的人機交互之鼠標版

不知道爲何計算機用戶大部分喜歡鼠標點擊,最近想掰弄一下可視化,放大平移選中拖動一下子交雜在一起,就暈了。

網上竟然還找不到比較好用的庫,那就自己動手豐衣足食吧。


實現的目標是:

支持鼠標長按鍵(比如按住一個圓一秒錶示選中);

支持鼠標手勢,再加一下模式識別的庫都可以自己弄手寫板了;

支持手機上加載頁面時將手指事件轉化爲鼠標時事件;

支持手機上幾個指頭抓起或撐開的動作(比如縮小或放大一個區域);

支持單擊,雙擊乃至多次點擊;

支持鼠標拖拽後事件;


先上repo吧:https://github.com/dna2github/petalJS/tree/master/visualization


modules.js就是自己寫了個動態加載javascript文件的腳本,這樣以後有ACL控制好加載不同js。原理是:用jQuery創建一個<script>元素插入頁面裏,然後運行裏面自帶的init函數。

interactions.js看代碼就好,index.html是一個小例子,有些小點在這裏記錄一下:

1 互交會註冊一些事件到各種基本鼠標事件上,比如click, mousemove, mousedown等,然後所有的新事件在此上層封裝。也就是interactions.js暴露出來的單擊雙擊都是和瀏覽器原帶的事件層不在同一個次元了。

2 互交代碼中,會使用定時器判斷是否觸發一個事件,比如長按一個元素2s以後觸發hold事件。當然,hold時間長短可以使用時通過interaction.config().hold.last動態調整。

3 gesture有兩種模式,relative模式是判斷鼠標和上一次位置的差距,大於閥值就記錄一個新的座標;absolute模式是將元素劃分爲方形小格,鼠標從一格到另一格會被記錄爲新座標。

4 手機多個手指抓去實現蘋果的pad功能還是蠻有意思的,就是要注意瀏覽器裏放x個手指在屏幕上抓是可以觸發事件的,加一個手指也會觸發事件,但是奇怪的是提起一個手指再抓就不觸發事件了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章