ホームページ >ウェブフロントエンド >jsチュートリアル >スライド式タッチスクリーンイベントモニタリングを実装するjsメソッド_javascriptスキル

スライド式タッチスクリーンイベントモニタリングを実装するjsメソッド_javascriptスキル

WBOY
WBOYオリジナル
2016-05-16 16:00:541440ブラウズ

この記事の例では、スライディング タッチ スクリーン イベント監視を js で実装する方法を説明します。皆さんの参考に共有してください。具体的な実装方法は以下の通りです。

function span_move_fun(){
 var span = document.getElementById("move_k");
 var span_left = $(span).offset().left;
 var span_top = $(span).offset().top;
 var start_left = $(span).offset().left;
 var start_top = $(span).offset().top;
 span.addEventListener('touchstart', function(event) {
  event.preventDefault();
  if (event.targetTouches.length == 1) {
     var touch = event.targetTouches[0];
     span.style.position = "absolute";
  span_top = $(this).offset().top;
  span_left = $(this).offset().left;
  start_top = touch.pageY
  start_left = touch.pageX
     var left = parseFloat(touch.pageX - start_left + span_left-30);
     var top = parseFloat(touch.pageY - start_top + span_top-73);
  span.style.left = String(left) + 'px';
  span.style.top = String(top) + 'px';
     }
   });
   span.addEventListener('touchmove', function(event) {
  event.preventDefault();
  if (event.targetTouches.length == 1) {
  var touch = event.targetTouches[0];
  span.style.position = "absolute";
  var left = parseFloat(touch.pageX - start_left + span_left-30);
     var top = parseFloat(touch.pageY - start_top + span_top-73);
  span.style.left = String(left) + 'px';
  span.style.top = String(top) + 'px';
  }
 });
   span.addEventListener('touchend', function(event) {
   var touch = event.changedTouches[0];
   if(parseFloat(touch.pageX - start_left + span_left-30) <= -5 || parseFloat(touch.pageX - start_left + span_left-30) >= 620 || parseFloat(touch.pageY - start_top + span_top-73) <= -38 || parseFloat(touch.pageY - start_top + span_top-73) >= 587){
    span.style.left = String(span_left-30) + 'px';
  span.style.top = String(span_top-73) + 'px';
   }
  event.stopPropagation();
 });
}

JS の左右のスライド タッチ スクリーン イベントには、主に touchstart、touchmove、touchend の 3 つのイベントが含まれます。これら 3 つのイベントの最も重要な属性は、X 座標と Y 座標を表す pageX と pageY です。

touchstart はタッチ開始時にイベントをトリガーします

touchend はタッチが終了するとイベントをトリガーします

touchmove イベントはかなり奇妙です。論理的に言えば、このイベントはタッチ プロセス中に継続的に発生するはずですが、私の Android 1.5 では、touchstart が発生した後に 1 回発生し、残りはほぼ同時に発生します。タッチエンドとしての時間。

これら 3 つのイベントにはすべて timeStamp 属性があり、その順序は touchstart -> touchmove ->touchmove -> であることがわかります。

以下はコード例です:

document.getElementsByTagName_r('body')[0].addEventListener('touchstart',function(e){
    nStartY = e.targetTouches[0].pageY;
    nStartX = e.targetTouches[0].pageX;
});
document.getElementsByTagName_r('body')[0].addEventListener('touchend',function(e){
    nChangY = e.changedTouches[0].pageY;
    nChangX = e.changedTouches[0].pageX;
});

追記:
1. タッチイベントとクリックイベントは同時にトリガーされません。今日のモバイル デバイスはより優れており、この問題は完全に回避されています。

2. タッチの開始位置と終了位置のずれに注意してください。変位が小さすぎる場合は、何も実行する必要はありません。

この記事が皆様の JavaScript プログラミング設計に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。