2017-12-13 12 views
0

JavaScriptを使用しており、HTML5ゲームを作成しています。は、JavaScriptでのhtmlの操作のみを有効にします。

私は物を買うためにボタンを使用しています。残念ながら私のボタンにontouchstart='function()'を使用することはできません。そのため、タッチスタートイベントリスナーを使用していて、ユーザーがボタンをタップするのを待っています(ボタンのIDで指定)。私は1を加える(ユーザーがゆっくりボタンをタップすると、それは最初のタップ機能を行います、なぜならAppleは(私はPhoneGapのとiphoneの6S上でテストしてい)300msの遅延を持っていること、気づいた何

document.addEventListener("touchstart", function() { 
    if (event.target.id === "button") { 
     clicks++; 
    } 
} 

ボタンを2回クリックしたときと同じように)機能を再開します。私は別のイベントリスナーを持っているので、これは期待できます。ユーザーがスマートフォンの代わりにコンピュータを持っている場合の「クリック」のためだけです。

私が必要とするのは、2回目のクリックを無効にする方法です。

基本的に、クリック数は1ずつ増加し(0から1まで)、ボタンのクリックアニメーションが表示され、合計クリック数は1ずつ増加します(1から2)。タッチスタートイベントリスナーは、最初の追加(私が望むもの)を引き起こしています。次に、ボタンをタップすることの副作用は、ユーザー入力をもう一度せずにボタンを2回クリックすることです。

私は、2番目のクリック部分を無効にする方法を見つけたいと思いますが、タップは保持してください。

ので、多分のように気にいらない:私は必要であればより多くの質問をすること自由に感じ、私はそれをよく説明を願ってい

document.addEventListener("touchstart", function() { 
    // disable 2nd click or clicking all together, only allowing touch events 
     clicks++; 
    } 
} 

答えて

0

まず、@https://developers.google.com/web/updates/2013/12/300ms-tap-delay-gone-awayを見てください。あなたがまだこの300msの問題を回避していない場合に備えてください。

これが当てはまらない、とあなたがハック何かをしたい場合は、多分同時に起こってからクリックを防ぐために

let lastclick = + new Date() 
let clicks = 0 

document.addEventListener("touchstart",() => { 
    if (+ new Date() - 100 > lastclick) { 
    clicks++ 
    lastclick = + new Date() 
    console.log(clicks) 
    } 
}) 

を試す(第2クリックが受理される前に、少なくとも100msの別離を必要とします)

+0

両方の回答ありがとう! –

関連する問題