Temat: Problem jQ, keydown
Piotr L.:
spróbuj zamiest .keydown() użyć .keyup albo .keypress()
onkeypress tutaj nie zadziała. Z tego co wiem to ten event jest odpalany tylko dla klawiszy których znak może być wydrukowany. Więc odpadają strzałki, page up, page down itp.
Problemu doszukiwał bym się w tym że w momencie gdy naciskasz klawisz przy zdarzeniu onkeydown, eventy są wywoływane jeden za drugim co może Ci psuć animację bo próbuje ją powtarzać od nowa. Albo coś w tym stylu.
Sam miałem taki problem animując sprity w grze online na HTML5. Obszedłem to w ten sposób że zapisuję ostatnio wciśnięty klawisz i jak trzymasz przycisk to przerywam event za każdym razem jak klawisz się pokrywa.
onkeyup czyści zapisany ostatnio klawisz.
czyli coś takiego
var lastKeyCode = undefined;
window.onkeydown(function(key){
if(lastKeyCode == key.keyCode) { return false; }
lastkeyCode = key.keyCode;
//tutaj wykonuje co chce wykonać
});
window.onkeyup(function() {
//tutaj zatrzymuje akcje
lastKeyCode = undefined;
});
W tym wypadku tak robię bo postać ma się poruszać tak długo jak klawisz jest wciśnięty.
Żaden ze mnie JavaScript ninja więc może ktoś coś mądrzejszego poradzi. Dla innych klawiszy jak strzałki itp lepiej użyć onkeypress. Ewentualnie poprzez onkeydown jak wspomniał Piotr, zanotuj jaki klawisz został wciśnięty a akcję odpal na onkeyup.
Dariusz Półtorak edytował(a) ten post dnia 09.07.12 o godzinie 15:20