精密なタッチ操作で正確な操作が可能

M37(2014 年 8 月に安定版)で、Chrome の TouchEvents の実装に変更が加えられ、報告される座標が整数ではなく浮動小数点数に変更されました。

変更前 変更後
clientX: 167
clientY: 196
pageX:   167
pageY:   196
radiusX: 26
radiusY: 26
screenX: 167
screenY: 277
clientX: 167.33299255371094
clientY: 195.66700744628906
pageX:   167.33299255371094
pageY:   195.66700744628906
radiusX: 25.843116760253906
radiusY: 25.843116760253906
screenX: 167.33334350585938
screenY: 276.66668701171875

この変更により、指の位置の精度が向上し、ユーザーのジェスチャーへの応答がスムーズになります。

Rick Byers のデモでは、渦をゆっくりと描画する際に、この違いがどれほど大きいかを確認できます。

タッチイベントの違い。

この変更は、ピクセル密度が 1 より大きい画面にのみ影響します。理由を理解するために、例を見てみましょう。

CSS ピクセルの 3x3 グリッドがあり、画面密度が 3 の場合、9x9 の物理ピクセルのグリッドがあり、ユーザーが左上から右下にジェスチャーするとします。

CSS ピクセル グリッドと画面ピクセル グリッド。

以前は、タップ位置を CSS ピクセルに丸めていましたが、このジェスチャーでは次の手順で処理されていました。

ジェスチャー中の CSS ピクセル精度。

ユーザーが指を動かすと物理的なピクセルが示す中間ステップは描画されません。

浮動小数点数に切り替えたジェスチャーは次のようになります。

ジェスチャー中の浮動小数点精度。

ほとんどの場合、コードを変更する必要はありませんが、TouchEvents の結果として行うアニメーションや動きが、特に遅いジェスチャーでスムーズになります。

この改善はモバイル Safari にも適用される予定です(https://bugs.webkit.org/show_bug.cgi?id=133180)。