Pokaż wyniki od 1 do 5 z 5

Wątek: Przytrzymanie i zwolnienie przycisku

  1. #1
    Zarejestrowany
    Dołączył
    Dec 2012
    Posty
    9

    Domyślnie Przytrzymanie i zwolnienie przycisku

    Witam, próbuje napisać kod w którym po przytrzymaniu przycisku, będzie wykonywana dana funkcja (w tym przypadku wysłanie danych do bazy za pomocą ajaxu i wyświetlenie animacji), a po zwolnieniu, funkcja zostaje natychmiast zatrzymana. Problem polega na tym, że po dłuższym przytrzymaniu przycisku i puszczeniu, jquery zapisuje jeszcze sobie jak długo klawisz był trzymany i jeszcze przez kilka sekund wykonuje funkcje zawartą w keydown.

    Dla lepszego zrozumienia kod wygląda mniej więcej tak.

    $().keydown(function (event) {
    if(event.keyCode==37){
    //wysłanie danych do bazy i wyświetlenie animacji
    }
    });

    Bardzo proszę o pomoc, rozumiem, że muszę dodać jakąś funkcję w keyup która przerwie instrukcje wykonywaną w keydown.

  2. #2
    Zasłużony Awatar karer
    Dołączył
    Apr 2008
    Posty
    2,554

    Domyślnie

    powinienes ustawic sobie zmienna globalna "kaydown" i ustawiac ja na true w swojej funkcji, a w funkcji keyup ustawiac ja na false. Dodatkowo przed wyslaniem czegos ajaxem sprawdzaj czy keydown jest true.
    Ujemna reputacja RLZZZZZZ!

    Piszem poprawnie po polskiemu!!!1!!11

  3. #3
    Zarejestrowany
    Dołączył
    Dec 2012
    Posty
    9

    Domyślnie

    Niestety, nadal mam z tym problem mój obecny kod wygląda mniej więcej tak:


    Kod:
    l=true;
    
    $().keydown(function (event) {
    if(event.keyCode==37){	
    if(l==true){
    //wysłanie danych do bazy i wyświetlenie animacji
    }
    }
    });
    
    $().keyup(function (event) {
    if(event.keyCode==37){	
    l=false;
    }
    });
    Dodałem sobie informacje do konsoli i po przytrzymaniu przycisku wygląda to mniej więcej tak:
    Kliknąłeś strzałkę w lewo
    Kliknąłeś strzałkę w lewo
    Kliknąłeś strzałkę w lewo
    Puściłeś
    Kliknąłeś strzałkę w lewo
    Kliknąłeś strzałkę w lewo
    Kliknąłeś strzałkę w lewo

    Próbowałem dodać też ten if w setInterval, ale to samo.

  4. #4
    Zasłużony Awatar karer
    Dołączył
    Apr 2008
    Posty
    2,554

    Domyślnie

    nie chce dawac ci gotowego rozwiazania bo mi sie pisac nie chce, ale powinienes zrobic sobie interval co powiedzmy 50ms. W tym intervalu powinienes sprawdzac po pierwsze czy postac moze sie ruszyc. Jesli moze sie ruszyc to sprawdzasz jaki klawisz jest aktualnie wcisniety. Jesli jakis jest wcisniety to najpierw ustawiasz stan na "nie moge sie ruszyc" a pozniej wysylasz zapytanie do bazy i animacje robisz. W odpowiedzi "onSuccess" lub "onError" dajesz stan na "moze sie ruszyc" tak zeby moglo sie wykonac nastepne zapytanie. Pamietaj ze JS jest asynchroniczny w ajaxach, wiec musisz ustawiac stany w momencie jak dostaniesz zwrotke. To nie szybkie polaczenie jak przy php z baza danych. Tutaj jednak trzeba to asynchronicznie projektowac.

    Kod:
    var canMove = true;
    var keycode = false;
    
    $().keydown(function (event) {
    keycode = event.keyCode
    });
    
    $().keyup(function (event) {
      keycode = false;
    });
    
    
    setInterval(function(){
      if (!canMove)return;
      if (keycode === false)return;
      if (keycode === 37){
        //tutaj dajesz instrukcje wyslania. Nie zapomnij dac ustawienia canMove na true po wyslaniu ajaxem
        canMove = false;
      }
    },50);
    Ujemna reputacja RLZZZZZZ!

    Piszem poprawnie po polskiemu!!!1!!11

  5. #5
    Zarejestrowany
    Dołączył
    Dec 2012
    Posty
    9

    Domyślnie

    Naprawdę dziękuję, wystarczyła mi sama idea stworzenia Intervala w którym będę co jakiś czas sprawdzał czy przycisk jest wciśnięty, możliwość ruchu itd. sprawdzam już trochę inaczej. Jeszcze raz dzięki.

Informacje o wątku

Użytkownicy przeglądający ten wątek

Aktualnie 1 użytkownik(ów) przegląda ten wątek. (0 zarejestrowany(ch) oraz 1 gości)

Podobne wątki

  1. [Poradnik] Dodanie przycisku MAX w stoczni
    Przez Mateusz2598 w dziale Poradniki xnova
    Odpowiedzi: 8
    Ostatni post / autor: 18-09-2010, 17:46
  2. Dodanie przycisku "max w budowie obrony - takiego samego jak w flocie
    Przez Nie zarejestrowany w dziale Pytania dotyczące silnika Xnova
    Odpowiedzi: 14
    Ostatni post / autor: 06-01-2010, 21:16
  3. Dodanie przycisku "max w budowie floty - takiego samego jak w obronie
    Przez michal12514 w dziale Pytania dotyczące silnika Xnova
    Odpowiedzi: 2
    Ostatni post / autor: 10-11-2009, 19:45
  4. Kolor pola formularza i przycisku
    Przez ulosok w dziale HTML / CSS
    Odpowiedzi: 2
    Ostatni post / autor: 12-01-2009, 07:31

Zakładki

Uprawnienia umieszczania postów

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •