title
2016年
3月
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
AV | Car | Game | Internet | IT | Linux | Movie | other | PC | RC | Reading | SmartPhone | Web


2016-03-05 初作

_ [Web]jQuery の拡張.

自作のプラグイン、習作なのです.

タッチ環境、マウス環境量対応、指定した ID 上で右フリック動作すると callback を呼び出す.

デフォルトでは一定距離(タッチは画面サイズの 1/5、PC は 80px)を、一定時間以内(600ms)に行うと発火する.

縦寄り方向や左方向、移動距離不足やゆっくり(600ms以上)であれば動かない.

使い方は単純に $(ID).flickBeside(callback [,ウェイト(ms)]); としてみた.

$.fn.flickBeside = function(callback, wT) {
var self = this;
callback = callback? callback: function(){};
wT = wT? wT: 600;
if ("ontouchstart" in window) {
	// touch
	var cFlag = false;
	self.on({
		'touchstart': function(e) {
			this.touchX = event.changedTouches[0].pageX;
			this.touchY = event.changedTouches[0].pageY;
			this.sT = new Date();
			cFlag = true;
		},
		'touchmove': function(e) {
			if (cFlag) {
				var moveX = event.changedTouches[0].pageX - this.touchX,
					moveY = event.changedTouches[0].pageY - this.touchY;
				if (moveY == 0) moveY = 1;
				var moveRate = Math.abs(moveX / moveY);
				if ((moveRate < 3) || (moveX < 0)) {
					// 縦寄り または 左方向 は キャンセル
					cFlag = false;
					e.stopPropagation();
				}
			}
		},
		'touchend': function(e) {
			if (cFlag) {
				var eT = new Date() - this.sT;
				if (eT < wT) {
					// 早い時だけ 動作
					var moveX = event.changedTouches[0].pageX - this.touchX;
					// 20%以上移動で 動作
					if (moveX > $(window).width() / 5) callback.apply;
				}
			}
		}
	});
} else {
	// mouse
	self.on({
		'mousedown': function(e) {
			this.sX = e.clientX;
			this.sY = e.clientY;
			this.sT = new Date();
		},
		'mouseup': function(e) {
			var moveX = e.clientX - this.sX,
				moveY = e.clientY - this.sY,
				eT = new Date() - this.sT;
				if (moveY == 0) moveY = 1;
				var moveRate = Math.abs(moveX / moveY);
			if ((moveRate < 3) || (moveX < 80) || (eT > wT)) {
				// 縦寄り または 80px未満 または ゆっくり は キャンセル
				e.stopPropagation();
			} else {
				callback.call();
			}
		}
	});
}
}


Links
  • Smoug Mail
    無料/有料 の、メールアドレス発行サービス。
    スパムフィルタ、アンチウィルス標準搭載!
«前の日記(2016-03-04) 最新 次の日記(2016-03-06)»