アクティブな各ポインタを意図的に追跡する
単純なドラッグでは、pointerdownで受け取ったpointerIdを保存し、そのポインターがアクティブな間だけ更新します。ポインターキャプチャを使うと、ポインターが要素の境界外へ移動しても、その後の移動や解放のイベントをゲーム要素に送り続けられます。pointerupとpointercancelは別々の終了処理として扱い、どちらの場合も状態を消去して、ジェスチャーが途切れてゲームが固まらないようにします。
設計で入力が制限されている場合を除き、ポインタが 1 つだけであると想定しないでください。 2 本目の指、ペン、またはマウスは別の pointerId を生成できます。ゲームが 1 つのアクティブなドラッグをサポートしている場合は、最初のドラッグを上書きさせるのではなく、追加のポインターを予想通り無視します。
デバイスの種類が重要な場合に選択する
PointerEvent は、タッチ、ペン、マウスの個別の処理が必要な場合に pointerType を公開します。たとえば、描画の仕組みは筆圧を使用することができますが、メニュー ボタンは任意のプライマリ ポインタを受け入れる必要があります。別のイベント システムを再作成するためだけにデバイス タイプに基づいて分岐することは避けてください。プレイヤーのインタラクションを改善することなく、テストするパスを追加します。
ブラウザーはポインター入力の周囲で互換性マウス イベントを発行する可能性があるため、両方のシステムで 1 つのアクションを 2 回処理することは避けてください。これらのデバイスが範囲内にある場合は、マウス、タッチ接触、およびペンをテストします。 MDN は、ポインタ キャプチャ、ポインタ識別子、およびイベント ファミリとマウス イベントとの関係を文書化します。
ゲームのポインター イベントについての質問
ポインタ イベントによりマウスとタッチが同一になりますか?
これらはイベント モデルを共有していますが、プロパティとユーザーの期待は依然として異なる可能性があります。 pointerType またはその他のイベントの詳細は、仕組みに具体的なデバイス固有の要件がある場合にのみ使用してください。
ゲームでポインタ キャプチャを使用する必要があるのはどのような場合ですか?
ポインターが要素のヒット領域から外れた後も、ドラッグ中の移動と解放イベントを受け取り続ける必要がある場合にキャプチャを使います。後片付けの際にキャプチャを解放し、キャンセルも処理します。
関連情報
古い情報を見つけましたか? 訂正を連絡