Atölye › 2048 › 24/26. adım
2048 en güzel telefonda, parmakla kaydırarak oynanır. Kaydırma hazır bir olay değil; onu bildiğimiz iki olaydan kurarız:
pointerdown: parmak (ya da fare) nereye bastı, hatırla.pointerup: kalktığında ne kadar yol aldı, ölç: yatayda dx, dikeyde dy.Hangisi daha büyükse o kazanır: çoğunlukla yanlamasına ise sol ya da sağ, çoğunlukla dikey ise yukarı ya da aşağı. İşaret (artı/eksi) yönü söyler.
```js
// A swipe is where the pointer came up compared to where it went down.
let swipeStart = null
canvas.addEventListener('pointerdown', (event) => {
swipeStart = { x: event.clientX, y: event.clientY }
})
canvas.addEventListener('pointerup', (event) => {
if (!swipeStart) return
const dx = event.clientX - swipeStart.x
const dy = event.clientY - swipeStart.y
swipeStart = null
if (Math.abs(dx) > Math.abs(dy)) move(dx > 0 ? 'right' : 'left')
else move(dy > 0 ? 'down' : 'up')
draw()
})
```let swipeStart = null → basılan nokta; parmak kalkıkken null.pointerdown → event.clientX ve event.clientY parmağın sayfadaki yeri; bir nesne olarak saklanır.pointerup → başlangıç yoksa (!swipeStart) hiçbir şey yapma. Varsa dx (sağa pozitif) ve dy (aşağı pozitif)
hesapla, başlangıcı unut.Math.abs(dx) > Math.abs(dy) → Math.abs işareti atar: yatay hareket dikeyden büyükse yatay bir kaydırma.
dx > 0 ? 'right' : 'left' → sağa mı sola mı.else → dikey: dy > 0 aşağı, değilse yukarı.function cellX(col) { satırının üstüne yorumu, swipeStart satırını ve iki dinleyiciyi yaz; altlarında bir boş
satır kalsın. Çalıştır, fareyle basılı tutup sürükleyerek dene.
Beceriler: Klavye ve fare girdisi
← Rekor Dokunmak kaydırmak değildir →