Atölye › Pinball › 27/42. adım
Palet, tuşu basılı tuttuğun sürece yukarıda kalmalı, bırakınca inmeli. Bu yüzden yalnız tuşa basılmasını değil, bırakılmasını da duymamız lazım.
Hangi palet tuşunun şu an basılı olduğunu bir nesnede tutacağız: pressed (basılı). Tuşlar:
Basma ve bırakma için iki ayrı kod yazmak yerine tek bir key fonksiyonu yazıyoruz; basınca down true,
bırakınca false oluyor. Bu adımda paletler henüz kalkmayacak; yalnız pressed doğru tutulacak.
```js
let pressed // { left, right }
pressed = { left: false, right: false }
function key(event, down) {
const k = event.key
if (k === 'ArrowLeft' || k === 'z' || k === 'Z') pressed.left = down
else if (k === 'ArrowRight' || k === '/' || k === 'm' || k === 'M') pressed.right = down
else if (k === ' ' || k === 'ArrowDown') {
if (down) launch()
} else return
event.preventDefault()
}
document.addEventListener('keydown', (event) => key(event, true))
document.addEventListener('keyup', (event) => key(event, false))
```let pressed → basılı tuş bilgisi. reset onu { left: false, right: false } yapar: true/false evet/hayır
değerleridir, başta ikisi de basılı değil.function key(event, down) { → her tuş olayında çağrılır. down basma için true, bırakma için false.pressed.left = down → tuş basılınca true, bırakılınca false olur. Tek satır ikisini de yapar.else if → "değilse, şu doğru mu?". Tuş sırayla denenir: sol palet tuşu mu, sağ palet tuşu mu, fırlatma tuşu mu?if (down) launch() → fırlatma yalnız basınca, bırakınca değil.} else return → bunların hiçbiri değilse fonksiyondan çık; böylece alttaki event.preventDefault() yalnız oyunun
tuşlarında çalışır, başka tuşlar tarayıcıda normal çalışır.'keyup' → tuş bırakılınca gelen olay. İki dinleyici de aynı key fonksiyonunu çağırır; biri true, biri
false vererek.let flippers ... satırının altına let pressed ... yaz.reset içinde flippers = ... satırının altına pressed = { left: false, right: false } yaz.document.addEventListener('keydown', ...) bloğunun tamamını sil; yerine key fonksiyonunu ve iki yeni
dinleyiciyi yaz.pressed'i deniyor.Beceriler: Klavye ve fare girdisi
← Paletler topu durdurur Hangi yöne dönmeli →