ジェスチャー


MIP は、コンポーネントで使用できるクリック、ダブルクリック、スライドなどのジェスチャをカプセル化します

var util = require('util');
var Gesture = util.Gesture;
var customEle = require('customElemenet').create();


var build = function () {
    var gesture = new Gesture(this.element);

    // on 可接受多个事件名做为参数,以空格分隔。如 gesture.on('tap swipe')
    gesture.on('tap', function (event, data) {
        // 原始事件。如tap事件是通过 touchend 触发,event为tap对应的touchend事件对象
        console.log(event);
        // gesture 计算后的数据。参数介绍见后面
        console.log(data.type); // "tap"
    });
};

初期化パラメータの概要

ジェスチャー インスタンス化するとき、2 番目のパラメーターは構成としてオブジェクトを渡すことができますパラメータ

例:

   // 默认阻止纵向滑动事件
    var gesture = new Gesture(element, {
        preventY: true
    });

特定のパラメータの導入:

preventDefault         是否阻止默认事件
preventX               是否阻止横向滑动时的默认事件
preventY               是否阻止纵向滑动时的默认事件
stopPropagation        是否阻止事件冒泡

デフォルトパラメータ:

// 如果初始化时不传入配置参数,会使用下面的配置进行初始化
{
    preventDefault: false,
    stopPropagation: false,
    // 默认会阻止横滑的事件,考虑到浏览器横滑有很多默认操作,所以在这里默认阻止横滑
    preventX: true,
    preventY: false
}

ジェスチャ データオブジェクトの導入

データオブジェクトは、イベント処理関数の 2 番目のパラメータとして渡されます。

例:

    gesture.on('tap', function (event, data) {
        console.log(data);
    });

一般フィールド:

angle              滑动角度,如横滑为0度
deltaTime          从开始到结束的时间间隔。单位是msdeltaX             横轴位移
deltaY             纵轴位移
direction          方向。0: 未变动   1: 上   2:右   3: 下   4: 左
distance           移动距离
pointers           触摸点
timeStamp          事件发生的时间戳
velocity           速度
velocityX          横向速度
velocityY          纵向速度
x                  触摸中心点坐标x
y                  触摸中心点坐标ytype               事件类型

拡張フィールド:

各ジェスチャはフィールドをデータ オブジェクトに拡張できます。たとえば、スワイプ イベントの swipeDirection フィールドについては、ジェスチャ レコグナイザの概要を参照してください。ジェスチャ レコグナイザは、ジェスチャ データ オブジェクトを受信し、特定のジェスチャを認識し、特定のジェスチャ イベントをトリガーできます。

Gesture Recognizer オブジェクトは、ユーザーがイベントをバインドすると自動的に作成され、ユーザーがイベントのバインドを解除すると自動的に破棄されます。

現在 3 つの組み込み認識機能があります: タップ、ダブルタップ、スワイプ

タップ

使用法:

gesture.on('tap', function (event, data) {
    console.log('单击');
});

ダブルタップ

タップとダブルタップが同時にバインドされている場合、タップ イベントがトリガーされます。ダブルクリックがトリガーされるかどうかを決定するために 300 ミリ秒の遅延が発生します。

使い方:

gesture.on('tap', function (event, data) {
    console.log('双击');
});

スワイプ

スワイプ

使い方:

// 使用方法1:
gesture.on('swipe', function (event, data) {
    console.log(data.type); // "swipe"
    console.log(data.swipeDirection); // "up" or "right" or "down" or "left"
});

// 使用方法2:
gesture.on('swipeup swipedown', function (event, data) {
    console.log(data.type) // "swipeup" or "swipedown"
    console.log(data.swipeDirection) // "up" or "down"
});