0

(1) アニメーションを開始し、(2) カウンターを調整するドラッグ イベント ハンドラーがあります。ターゲットをドラッグすると、複数のハンドラーが数回トリガーされ、カウンターが正しくありません。タッチ イベントは Hammer.js に基づいています。

$(hammer).on('swipeleft',function(){
   doAnimation();
   counter++;
}

ハンドラーは、連続的な (長い) ドラッグで複数のイベントが発生し、アニメーション中にユーザーがすばやく複数回ドラッグしたため、複数回トリガーされる可能性があることに注意してください (「リリース」イベントに頼ることができません)。

また、doAnimation() は別のアニメーション ライブラリにラップされているため、そのライブラリの一部のコードを台無しにしたくありません (他に選択肢がない場合を除きます)。極端な例として、アニメーションを実装するために -webkit-transition 機能を使用しています。

$(hammer).on('swipeleft',function(){
   $('.content').css('width',0);//-webkit-transition: all 0.5s ease;
   counter++;
}

このような状況に対処するにはどうすればよいですか?

4

1 に答える 1

0

次のようなことができます:

var isDraging = false;

// -- Increment counter only if this is the first drag event:
$(hammer).on('drag',function(){
   doAnimation();
   if(!isDraging)
      counter++;
   isDraging = true;
}

// -- When dropping, set flag to false again:
$(hammer).on('drop',function(){
   isDraging = false;
}
于 2013-09-13T11:34:16.110 に答える