1. 程式人生 > >js多點觸控touch事件

js多點觸控touch事件

<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width , initial-scale=1 , maximum-scale=1 , user-scalable=no">
<style>
body{background-color:#222;}
.spot{position:absolute; width:70px; height:70px; border-radius:35px; box-shadow:0px 0px 40px #fff; background-color:#fff; opacity:.7;}
</style>
</head>
<body>
<script>
    var spots = {} , touches , timer;

    document.addEventListener('touchstart',function(e){
        e.preventDefault();
        [].forEach.call(e.targetTouches,function(touch){
            //對每一根觸控在螢幕上的手指都生成一個元素,並且用touch.identifier作為該元素的唯一標識,觸控結束後清除引用的元素

            if(spots[touch.identifier]){
                return;
            }
            var spot = spots[touch.identifier] = document.createElement('div');
            spot.classList.add('spot');
            spot.style.top = touch.pageY - 35;
            spot.style.left = touch.pageX - 35;
            document.body.appendChild(spot);
        })
        timer = setInterval(function() {
            renderTouches(touches);
        },16);
    },false);

    document.addEventListener('touchmove',function(e){
        e.preventDefault();
        touches = e.touches;
    });

    function renderTouches(touches){
        if(!touches){
            return;
        };
        [].forEach.call(touches,function(touch){
            var spot = spots[touch.identifier];
            if(spot){
                spot.style.top = touch.pageY - 35;
                spot.style.left = touch.pageX - 35;
            }
        })
    }

    document.addEventListener('touchend',function(e){
        e.preventDefault();
        [].forEach.call(e.changedTouches,function(touch){
            var spot = spots[touch.identifier];
            if(spot){
                document.body.removeChild(spot);
                delete spots[touch.indentifier];
            }
        })
        if(e.changedTouches.length === 0){
            clearInterval(timer);
        }
    })

    //touches:表示當前位於螢幕上的所有手指動作的列表,是一個TouchList型別的物件,TouchList是一個類陣列物件,它裡面裝的是Touch物件
    //targetTouches:位於當前DOM元素上的手指動作的TouchList列表
    //changedTouches:涉當前事件的手指動作的列表,例如,在一個touchend事件中,這將是移開的那根手指
    //touchstart等事件在觸發時是允許多個手指同時觸控式螢幕幕的,每一根手指都會產生一個Touch物件,包含以下屬性:identifier一個數字,用於唯一標識觸控會話中的當前手指,target作為動作目標的DOM元素,及座標相關clientX/Y等


</script>
</body>
</html>

相關推薦

js觸控touch事件

<html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width , initial-scale=1 , maximum-scale=1 , user-scal

C WinForm 開發Windows7觸控(Multi-Touch)應用程式

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Android事件傳遞、觸控及滑動衝突的處理

基本概念 所有Touch事件都會被封裝MotionEvent, 包括Touch的型別、位置(相對螢幕的絕對位置,相對View的相對位置)、時間、歷史記錄以及第幾個手指(多點觸控)等; 事件有多種型別,常用的事件型別有:ACTION_DOWN,ACTION_UP,ACTION_MOVE,ACTION

C WinForm 開發Windows7觸控(Multi-Touch)應用程序

gist message config vista pro params struct 圖片 break 分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net

觸控顯示坐標

pointer ext ech col etc static sca 初始 信息 public class MainActivity extends AppCompatActivity { @Override protected void onCreat

基於Visual C 2010開發Windows7應用 觸控圖片處理應用程式 1 同時處理張圖片

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

基於Visual C 2010與windows SDK fo windows7開發Windows 7的觸控特性應用

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Appium觸控-MultiAction對頁面進行放大或縮小

在網頁中我們經常使用縮放操作來便利的檢視具體的資訊,在appium中使用MultiAction多點觸控的類來實現 MultiAction是多點觸控的類,可以模擬使用者多點操作。主要包含載入add()和執行perform()兩個方法. MultiAction一般和TouchAction結合使用,故

安卓自定義View進階-觸控詳解

Android 多點觸控詳解,在前面的幾篇文章中我們大致瞭解了 Android 中的事件處理流程和一些簡單的處理方案,本次帶大家瞭解 Android 多點觸控相關的一些知識。 多點觸控 ( Multitouch,也稱 Multi-touch ),即同時接受螢幕上多個點的人機互動

雷達觸控牆面地面大屏互動投影tuio協議雷達檢測互動程式軟體

一、適用場景       本產品適用於鐳射雷達互動投影,牆面、地面、大屏、桌面互動。目前支援RPLIDAR A2 A3。       【有興趣的朋友可以一起交流,qq 357265844】 二、軟體特點   &nb

如何利用RPLIDAR A2進行觸控應用

1. RPLidar鐳射雷達套件 2. RPlidar_multi_touch SDK :  請點選 這裡 下載   注意事項 注意 此SDK僅適用於RPLiDAR A2 型號,其他型號暫不支援,請知悉。 1. 請確保USB線不宜過長,需保

觸控技術被廣泛應用於段碼屏領域

最近,隨著多點觸控技術的逐步成熟發展,已經被成功應用於各大大螢幕拼接牆行業中,不管是那種技術的大螢幕技術都很好的相容應用了觸控技術,使我們在操作大螢幕的時候更加靈活。讓我們的使用者直接體驗到了觸控技術實現的人機互動的快樂。隨著大螢幕技術的不斷升級進步,大螢幕拼接

android如何怎麼禁止觸控

不積跬步無以至千里      在一個頁面裡做了個對講的操作,對講需要長按操作,但是發現碰觸介面其他位置,會中斷,通過監聽這個View的onTouchEvent,其中的MotionEvent中的acti

[小白求助]Appium自動化測試—觸控操作地圖縮放報錯

測試場景 安裝啟動百度地圖Android app 進入地圖後分別進行放大縮小操作 滑動原理圖解 程式碼實現 multi_action.py from appium import webdriver from appium.webdriver.common.tou

cocos2d-x 觸控總結

                【一】:這個和單點有啥區別1.使用上的區別。這個不用多說,有些情況下我們是需要多點觸控來實現更好的效果,比如,切水果。2.和單點的區別[1].單點使用監聽類是CCtargetedTouchDelegate,而多點使用CCtangardTouchDelegate.[2].多點觸控

Android觸控技術,實現對圖片的放大縮小平移,慣性滑動等功能

首先推薦一下鴻洋大大的打造個性的圖片預覽與多點觸控視訊教程,這套教程教我們一步一步實現了多點觸控實現對圖片的平移和縮放的功能,這篇文章我將在鴻洋大大的基礎之上做了一些擴充套件功能: 1.圖片的慣性滑動 2.圖片縮放小於正常比例時,鬆手會自動回彈成正常比例

android ImageView 手勢縮放,雙擊放大,自由滑動,觸控,慣性滑動

相容viewPager import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.content.Context; import android.graphics

觸控互動可視三維電子沙盤地理資訊系統

多點觸控互動可視三維電子沙盤地理資訊系統 1、★軟體為國產自主獨立研製開發三維地理資訊系統平臺,絕對不允許使用如下國外免費開源地理資訊平臺Worldwind\skyline\mapgis\mapinfo\ARCGIS\OSGEARTH\CESIUM\UNGINE 2.★能夠相容《兵力部署管

android 自定義ImageView實現圖片手勢滑動,觸控放大縮小效果

首先呢,還是一貫作風,我們先來看看眾多應用中的示例:(這種效果是很常見的,可以說應用的必須品.)                             搜狐客戶端                                    百度新聞客戶端          

Android-防止使用者快速選和觸控

1.為什麼要防止使用者重複點選在使用者使用App的時候,並不會乖乖的按照我們的想法而執行。下面就拿我們熟悉的Button來:舉個栗子假設這個Button的點選事件是“一個登入的網路請求”,這時候我們的主角-老司機小明登場了,他嫻熟的輸入了自己的賬號和密碼,然後點選了登入,靜靜地等候著APP的反饋跳轉,可是天有