91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Javascript的高級手勢如何使用

發布時間:2022-03-03 10:47:45 來源:億速云 閱讀:148 作者:iii 欄目:web開發

這篇文章主要介紹“Javascript的高級手勢如何使用”,在日常操作中,相信很多人在Javascript的高級手勢如何使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Javascript的高級手勢如何使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

在IE10中新加入的對高級用戶輸入的識別支持,舉例說明:注冊一個點擊操作,通過一句addEventListener 就能夠知道當前用戶的點擊是哪種設備,是手指的點擊,是鼠標的單擊還是觸控筆的點擊(平板設備都會帶有觸控筆)

  在IE10中新加入的對高級用戶輸入的識別支持,舉例說明:注冊一個點擊操作,通過一句addEventListener 就能夠知道當前用戶的點擊是哪種設備,是手指的點擊,是鼠標的單擊還是觸控筆的點擊(平板設備都會帶有觸控筆)。

 <canvas id="MyCanvas"></canvas>

    <script>

        MyCanvas.addEventListener("MSPointerDown", MyBack, false);

        function MyBack(e) {

            alert(e.pointerType.toString());

        }

    </script>

 以上這段代碼就是能夠識別出當前用戶的點擊是哪種設備,通過回調的方法中 e.pointerType 還進行判斷。鼠標是4,觸控筆是3,手指是2。至于值為1是何種設備還有待研究。

還有需要注意的就是 想在javascript中添加對輸入設備的識別,注冊的方法事件也是有點點區別。

addEventListener 添加的事件為 MSPointerDown

而在IE10中對于這樣的多種設備識別中優先處理的手指的點擊,前提是不影響功能正常單擊的情況下。然而IE10不僅僅能識別用戶的輸入設備還支持非常多的高級手勢

創建手勢對象

在您的網站中處理手勢的第一步是實例化手勢對象。

var myGesture = new MSGesture();

接下來,為該手勢提供一個目標元素。瀏覽器將對該元素觸發手勢事件。同時,該元素還可以確定事件的坐標空間。

elm = document.getElementById("someElement");

myGesture.target = elm;

elm.addEventListener("MSGestureChange", handleGesture);

最后,告知手勢對象在手勢識別期間處理哪些指針。

elm.addEventListener("MSPointerDown", function (evt) {

// adds the current mouse, pen, or touch contact for gesture recognition

myGesture.addPointer(evt.pointerId);

});

注意:請不要忘記您需要使用 &ndash;ms-touch-action 來配置元素以防止其執行默認觸摸操作(例如,平移和縮放),并為輸入提供指針事件。

處理手勢事件

一旦手勢對象具有有效目標并至少添加了一個指針,則其將開始觸發手勢事件。手勢事件可分為兩種:靜態手勢(例如,點擊或保持)和動態手勢(例如,收縮、旋轉和輕掃)。

點擊

最基本的手勢識別是點擊。當檢測到點擊時,將會在手勢對象的目標元素觸發 MSGestureTap 事件。不同于單擊事件,點擊手勢只能在用戶觸摸、按鼠標按鈕或使用手寫筆觸控而不移動時觸發。如果您要區分用戶點擊元素和拖動元素的操作,這一點通常會顯得十分有用。

長按

長按手勢是指用戶使用一個手指觸摸屏幕,并保持片刻并抬起而不移動的操作。在長按交互期間,MSGestureHold 事件會針對手勢的各種狀態而多次觸發:

復制代碼

代碼如下:

element.addEventListener("MSGestureHold", handleHold);

function handleHold(evt) {

if (evt.detail & evt.MSGESTURE_FLAG_BEGIN) {

// Begin signals the start of a gesture. For the Hold gesture, this means the user has been holding long enough in place that the gesture will become a complete press & hold if the finger is lifted.

}

if (evt.detail & evt.MSGESTURE_FLAG_END) {

// End signals the end of the gesture.

}

if (evt.detail & evt.MSGESTURE_FLAG_CANCEL) {

// Cancel signals the user started the gesture but cancelled it. For hold, this occurs when the user drags away before lifting. This flag is sent together with the End flag, signaling the gesture recognition is complete.

}

}

動態手勢(收縮、旋轉、輕掃和拖動)

動態手勢(例如,收縮或旋轉)將以轉換的形式報告,這與 CSS 2D 轉換頗為類似。動態手勢可觸發三種事件:MSGestureStart、MSGestureChange(隨著手勢的持續而重復觸發)和 MSGestureEnd。每個事件都包含縮放(收縮)、旋轉、轉換和速度等相關信息。

由于動態手勢以轉換的形式報告,因此使用包含 CSS 2D 轉換的 MSGesture 來操作諸如照片或拼圖等元素將變得十分輕松。例如,您可以通過下列方式啟用縮放、旋轉和拖動元素的操作:

復制代碼

代碼如下:

targetElement.addEventListener("MSGestureChange", manipulateElement);

function manipulateElement(e) {

// Uncomment the following code if you want to disable the built-in inertia provided by dynamic gesture recognition

// if (e.detail == e.MSGESTURE_FLAG_INERTIA)

// return;

var m = new MSCSSMatrix(e.target.style.transform); // Get the latest CSS transform on the element

e.target.style.transform = m

.translate(e.offsetX, e.offsetY) // Move the transform origin under the center of the gesture

.rotate(e.rotation * 180 / Math.PI) // Apply Rotation

.scale(e.scale) // Apply Scale

.translate(e.translationX, e.translationY) // Apply Translation

.translate(-e.offsetX, -e.offsetY); // Move the transform origin back

}

縮放和旋轉等動態手勢可支持鼠標操作,具體可通過在旋轉鼠標滾輪的同時分別使用 CTRL 或 SHIFT 修飾鍵來實現。

到此,關于“Javascript的高級手勢如何使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

仁寿县| 饶河县| 乐业县| 古浪县| 安塞县| 五家渠市| 靖远县| 含山县| 芦溪县| 梧州市| 祁东县| 湖南省| 香格里拉县| 正定县| 灵台县| 宁国市| 新巴尔虎左旗| 潞城市| 乌兰县| 菏泽市| 安新县| 县级市| 翁牛特旗| 师宗县| 定远县| 航空| 庐江县| 上林县| 崇州市| 寿阳县| 葫芦岛市| 东明县| 永城市| 六安市| 微山县| 东海县| 永新县| 卢湾区| 昆山市| 扎兰屯市| 平泉县|