Hassas hareketler için hassas dokunma

Matt Gaunt

M37 sürümü itibarıyla (08/2014'te kararlı) Chrome'un TouchEvents özelliğinde yapılan bir değişiklik, raporlanan koordinatları tam sayı yerine kayan koordinatlara değiştirmiştir.

Önce Sonra
clientX: 167
clientY: 196
pageX:   167
pageY:   196
yarıçapX: 26
yarıçapY: 26
screenX: 167
screenY: 277
clientX: 167.332992555371094
clientY: 195.66700744628906
pageX: 167.33299255371094
pageY: 195.66700744628906
195.66700744628906
16700744628906
16700744628906
12658906
167.33299255371094

Bu değişikliğin sonucu, parmaklarınızın daha isabetli olmasını sağladığı için kullanıcıların hareketlerine daha sorunsuz bir yanıt vermeniz anlamına gelir.

Rick Byers'ın demosunu kullanarak, yavaşça girdap çizerken bunun ne büyük bir fark yaratabileceğini görebilirsiniz.

Dokunma Etkinliklerindeki farklar.

Bu durum yalnızca piksel yoğunluğu 1'den büyük olan ekranları etkiler. Bunun nedenini anlamak için bir örnek üzerinden gidelim.

CSS piksellerinden oluşan 3x3 boyutunda bir ızgaranızın olduğunu ve ekran yoğunluğunun 3 olduğunu düşünün. Diğer bir deyişle, 9x9 fiziksel pikselden oluşan bir ızgaramız ve sol üstten sağ alta doğru kullanıcı hareketleri vardır.

CSS piksel ve ekran pikseli ızgarası.

Başlangıçta, dokunma konumunu en yakın CSS pikseline yuvarlıyorduk. Yani bu harekette aşağıdaki adımları uygulayacaksınız.

Hareket sırasında CSS pikseli hassasiyeti.

Kullanıcı parmağını hareket ettirdikçe, fiziksel piksellerin gösterebileceği ara adımların hiçbirini çizemeyiz.

Kayan görüntülere geçiş yaptığımıza göre hareketimiz şu şekilde görünebilir.

Hareket sırasında kaydırma hassasiyeti.

Çoğu durumda bu işlem, kodunuzda herhangi bir değişiklik yapılmasını gerektirmez ancak TouchEvents'ın sonucunda yaptığınız animasyonlar veya hareketler, özellikle yavaş hareketlerde daha yumuşak olur.

Bu iyileştirmeyi mobil Safari'ye de getirmeyi planlıyoruz: https://bugs.webkit.org/show_bug.cgi?id=133180.