2016-03-30 15 views
0

このjs関数を画面に1秒間タッチした後に実行する方法 と どうすれば同じタッチ位置の1秒にすることができますか?同じ位置で1秒間ですか?関数実行前に一秒待つ方法

function onCanvasTouchStart(event) 
{ 
    if(event.touches.length == 1) 
    { 
     // draw 
     event.preventDefault(); 
     brush.strokeStart((event.touches[0].pageX) - canvas.offsetLeft, (event.touches[0].pageY) - canvas.offsetTop); 
     window.addEventListener('touchmove', onCanvasTouchMove, false); 
     window.addEventListener('touchend', onCanvasTouchEnd, false); 
    } 
} 

答えて

1

setTimeOutを使用してください。

function onCanvasTouchStart(event){ 
    if(event.touches.length == 1){ 
     setTimeout(function(){ 
      // draw 
      event.preventDefault(); 

      brush.strokeStart((event.touches[0].pageX) - canvas.offsetLeft, (event.touches[0].pageY) - canvas.offsetTop); 

      window.addEventListener('touchmove', onCanvasTouchMove, false); 
      window.addEventListener('touchend', onCanvasTouchEnd, false); 
     }, 1000); 

    } 

} 
+0

どのように私は同じタッチ位置の1秒にすることができます..私は1秒間同じ位置で画面に触れ続ける? –

+0

@ManoDestraのように、タッチの開始/終了時刻を追跡する必要があります。私はこのフィドルでアイデアを実証するために大まかにいくつかのコードを書いています。 https://jsfiddle.net/keL9pbar/。 – arifin4web

1
function onCanvasTouchStart(event) { 
    if (event.touches.length == 1) { 
     setTimeout(function() { 
      // draw 
      event.preventDefault(); 

      brush.strokeStart((event.touches[0].pageX) - canvas.offsetLeft, (event.touches[0].pageY) - canvas.offsetTop); 

      window.addEventListener('touchmove', onCanvasTouchMove, false); 
      window.addEventListener('touchend', onCanvasTouchEnd, false); 
     }, 1000); 
    } 
} 

これは秒後に画面に任意のタッチ後に発生しますが、画面上で連続1秒タッチした後、それを必要とする場合は、タッチが「wasnていることを確認する必要がありますこの内部関数が呼び出される前の任意の時点で終了しました。タッチが開始/終了する日付を格納することができます。そして、このsetTimeoutを通知したタッチが開始されてからタッチが終了した場合は、内部関数のコードを続行しません。

+0

どのように私は同じタッチ位置の1秒にすることができます..私は1秒間同じ位置で画面に触れ続ける? –

+0

この場合、タッチ移動イベントがデルタ平均から離れすぎないようにする必要があります。彼らの指がまだ十分に残っているように。または、厳密にしたい場合は、起動後に移動イベントが発生していないことを確認してください。 – ManoDestra