久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

Javascript 高級(jí)手勢(shì)使用介紹_html5教程技巧

Javascript 高級(jí)手勢(shì)使用介紹_html5教程技巧HTML5中文學(xué)習(xí)網(wǎng),是中國最大的HTML5中文門戶,為廣大HTML5愛好者提供各種HTML5資料,包括HTML5網(wǎng)站、HTML5資訊、HTML5應(yīng)用、HTML5游戲、HTML5教程、HT
點(diǎn)評(píng):在IE10中新加入的對(duì)高級(jí)用戶輸入的識(shí)別支持,舉例說明:注冊(cè)一個(gè)點(diǎn)擊操作,通過一句addEventListener 就能夠知道當(dāng)前用戶的點(diǎn)擊是哪種設(shè)備,是手指的點(diǎn)擊,是鼠標(biāo)的單擊還是觸控筆的點(diǎn)擊(平板設(shè)備都會(huì)帶有觸控筆)

  在IE10中新加入的對(duì)高級(jí)用戶輸入的識(shí)別支持,舉例說明:注冊(cè)一個(gè)點(diǎn)擊操作,通過一句addEventListener 就能夠知道當(dāng)前用戶的點(diǎn)擊是哪種設(shè)備,是手指的點(diǎn)擊,是鼠標(biāo)的單擊還是觸控筆的點(diǎn)擊(平板設(shè)備都會(huì)帶有觸控筆)。

 <canvas id="MyCanvas"></canvas>
    <script>
        MyCanvas.addEventListener(
"MSPointerDown", MyBack, false);
        
function MyBack(e) {
            alert(e.pointerType.toString());
        }
    
</script>

 以上這段代碼就是能夠識(shí)別出當(dāng)前用戶的點(diǎn)擊是哪種設(shè)備,通過回調(diào)的方法中 e.pointerType 還進(jìn)行判斷。鼠標(biāo)是4,觸控筆是3,手指是2。至于值為1是何種設(shè)備還有待研究。

還有需要注意的就是 想在javascript中添加對(duì)輸入設(shè)備的識(shí)別,注冊(cè)的方法事件也是有點(diǎn)點(diǎn)區(qū)別。

addEventListener 添加的事件為 MSPointerDown

而在IE10中對(duì)于這樣的多種設(shè)備識(shí)別中優(yōu)先處理的手指的點(diǎn)擊,前提是不影響功能正常單擊的情況下。然而IE10不僅僅能識(shí)別用戶的輸入設(shè)備還支持非常多的高級(jí)手勢(shì)

以下為IE10高級(jí)手勢(shì)支持的演示

 

創(chuàng)建手勢(shì)對(duì)象

在您的網(wǎng)站中處理手勢(shì)的第一步是實(shí)例化手勢(shì)對(duì)象。

var myGesture = new MSGesture();

接下來,為該手勢(shì)提供一個(gè)目標(biāo)元素。瀏覽器將對(duì)該元素觸發(fā)手勢(shì)事件。同時(shí),該元素還可以確定事件的坐標(biāo)空間。

elm = document.getElementById("someElement");

myGesture.target = elm;

elm.addEventListener("MSGestureChange", handleGesture);

最后,告知手勢(shì)對(duì)象在手勢(shì)識(shí)別期間處理哪些指針。

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

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

myGesture.addPointer(evt.pointerId);

});

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

處理手勢(shì)事件

一旦手勢(shì)對(duì)象具有有效目標(biāo)并至少添加了一個(gè)指針,則其將開始觸發(fā)手勢(shì)事件。手勢(shì)事件可分為兩種:靜態(tài)手勢(shì)(例如,點(diǎn)擊或保持)和動(dòng)態(tài)手勢(shì)(例如,收縮、旋轉(zhuǎn)和輕掃)。

點(diǎn)擊

最基本的手勢(shì)識(shí)別是點(diǎn)擊。當(dāng)檢測到點(diǎn)擊時(shí),將會(huì)在手勢(shì)對(duì)象的目標(biāo)元素觸發(fā) MSGestureTap 事件。不同于單擊事件,點(diǎn)擊手勢(shì)只能在用戶觸摸、按鼠標(biāo)按鈕或使用手寫筆觸控而不移動(dòng)時(shí)觸發(fā)。如果您要區(qū)分用戶點(diǎn)擊元素和拖動(dòng)元素的操作,這一點(diǎn)通常會(huì)顯得十分有用。

長按

長按手勢(shì)是指用戶使用一個(gè)手指觸摸屏幕,并保持片刻并抬起而不移動(dòng)的操作。在長按交互期間,MSGestureHold 事件會(huì)針對(duì)手勢(shì)的各種狀態(tài)而多次觸發(fā):

復(fù)制代碼
代碼如下:

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.
}
}

動(dòng)態(tài)手勢(shì)(收縮、旋轉(zhuǎn)、輕掃和拖動(dòng))

動(dòng)態(tài)手勢(shì)(例如,收縮或旋轉(zhuǎn))將以轉(zhuǎn)換的形式報(bào)告,這與 CSS 2D 轉(zhuǎn)換頗為類似。動(dòng)態(tài)手勢(shì)可觸發(fā)三種事件:MSGestureStartMSGestureChange(隨著手勢(shì)的持續(xù)而重復(fù)觸發(fā))和 MSGestureEnd。每個(gè)事件都包含縮放(收縮)、旋轉(zhuǎn)、轉(zhuǎn)換和速度等相關(guān)信息。

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

復(fù)制代碼
代碼如下:

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
}


縮放和旋轉(zhuǎn)等動(dòng)態(tài)手勢(shì)可支持鼠標(biāo)操作,具體可通過在旋轉(zhuǎn)鼠標(biāo)滾輪的同時(shí)分別使用 CTRL 或 SHIFT 修飾鍵來實(shí)現(xiàn)。


【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

作為一名前端工程師,寫組件的能力至關(guān)重要。雖然javascript經(jīng)常被人嘲笑是個(gè)小玩具,但是在一代代大牛的前仆后繼的努力下,漸漸的也摸索了一套組件的編寫方式。下面我們來談?wù)劊?/div>
call和apply都是改變上下文中的this并立即執(zhí)行這個(gè)函數(shù),bind方法可以讓對(duì)應(yīng)的函數(shù)想什么時(shí)候調(diào)就什么時(shí)候調(diào)用,并且可以將參數(shù)在執(zhí)行的時(shí)候添加,這是它們的區(qū)別,根據(jù)自己的實(shí)際情
JavaScript對(duì)象是一種復(fù)合值:它是屬性和已命名值的集合。通過quot;.quot;符號(hào)來引用屬性值。當(dāng)屬性值是一個(gè)函數(shù)時(shí),稱為方法。,HTML5中國,中國最大的HTML5中文門戶。
JavaScript 只有 function 級(jí)的定義域,而無其他很多編程語言中的塊定義域,所以使得你在某一 function 內(nèi)的某語句和循環(huán)體中定義了一個(gè)變量,此變量可作用于整個(gè) function 內(nèi),而不僅僅是在
如何寫JavaScript才能逼格更高呢?怎樣才能組織JavaScript才能讓別人一眼看出你不簡單呢?是否很期待別人在看完你的代碼之后感嘆一句“原來還可以這樣寫”呢?下面列出一些在JavaScri
您只要按照這七個(gè)步驟操作就會(huì)大大提高您的JavaScript項(xiàng)目的質(zhì)量。使用這個(gè)工作流程,錯(cuò)誤將會(huì)減少并且將很多處理優(yōu)化,讓用戶擁有一個(gè)愉悅的上網(wǎng)瀏覽體驗(yàn)。 ...,HTML5中國,中國最
主站蜘蛛池模板: 中文字幕高清 | 青草视频在线 | 欧美区日韩区 | 成人免费视频一区二区 | 国产一区二区三区视频 | 啪啪免费网站 | 免费看黄色网址 | 亚洲乱淫 | 亚洲人成免费 | 蜜桃在线观看视频 | 免费av观看 | 亚洲三级黄色片 | 日韩一区二区三区在线播放 | 亚洲精品1区2区 | 亚洲小说欧美激情另类 | 日韩3级 | 亚洲+小说+欧美+激情+另类 | 日韩久久视频 | 久久精品久久久 | 在线成人 | 久久精品久久久 | 久久久久女教师免费一区 | 91亚洲一区 | 国产成人精品免费视频 | 久久免费精品视频 | 91网站免费看 | 99国产精品99久久久久久粉嫩 | 黄色在线观看免费 | 日韩伦理一区二区 | 福利片在线观看 | 国产一区二区三区在线 | 久久久久久成人 | 日日干夜夜干 | 欧美成人精品一区二区三区 | 一级片网址 | 蜜桃视频成人 | 欧美国产在线视频 | 欧美69视频 | 精品免费 | 97精品国产97久久久久久免费 | 中文字幕一区二区在线播放 |