Hassas hareketler için hassas dokunma

Matt Gaunt

M37 itibarıyla (08/2014'te kararlı durumda) Chrome'un TouchEvents etkinliklerinin uygulamasıyla ilgili bir değişiklik yaşandı. Bu değişiklik, raporlanan koordinatları tamsayılar yerine kayan noktalara dönüştürür.

Önce Sonra
clientX: 167
clientY: 196
pageX:   167
pageY:   196
yarıçapX: 26
yarıçap: 26
ekranX: 167
ekranY: 277
clientX: 167.33299255371094
clientY: 195.66700744628906
pageX: 167.33299255371094
pageY: 195.66700744628906.60744628906.



Bu değişikliğin sonucunda, parmak pozisyonunda daha doğru sonuçlar elde etmenizi sağladığı için kullanıcı hareketlerine daha akıcı bir şekilde yanıt vermiş olursunuz.

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

Dokunma Etkinlikleri arasındaki farklar.

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

CSS piksellerinden oluşan 3x3 boyutunda bir tabloya sahip olduğunuzu ve ekran yoğunluğunun 3 olduğunu, yani 9x9 fiziksel pikselden oluşan bir tabloya sahip olduğunuzu ve sol üstten sağ alta doğru kullanıcı hareketlerinin yapıldığını varsayalım.

CSS Piksel ve ekran piksel ızgarası.

İlk başta dokunma konumunu en yakın CSS pikseline yuvarlıyorduk. Bu, harekette aşağıdaki adımların uygulanması anlamına geliyordu.

Hareket sırasında CSS piksel hassasiyeti.

Kullanıcı parmağını hareket ettirirken fiziksel piksellerin gösterebileceği ara adımlardan herhangi birini çizemiyoruz.

Artık kayan öğelere geçiş yaptığımıza göre hareketimiz şöyle görünebilir.

Hareket sırasında kaydırma hassasiyeti.

Çoğu durumda bu, kodunuzda değişiklik yapmanızı gerektirmez ancak TouchEvents'ın sonucunda yaptığınız tüm animasyonların veya hareketlerin özellikle yavaş hareketler için daha yumuşak olacağı anlamına gelir.

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