Skocz do zawartości

[Java Script] Blokowanie ciągłego "chodzenia"


Markuz

Rekomendowane odpowiedzi

Oto mój kod chodzenia:

function OdswiezMape() {
    var req = mint.Request();
    req.Send("map_includes/5x5game.php", "map");
    var req = mint.Request();
    req.Send("map_includes/gracze_obok.php", "gold");

}


function go(where) {
            document.getElementById('hero').style.background= "url(img/hero_"+where+".png)";
            var req = mint.Request();
            req.Send("ruch.php?step_edit="+where, "response");
            document.getElementById('map').style.margin.Left=50;
            OdswiezMape();     
}


function przechwyc(e) {
    var event = window.event || e;
    switch(event.keyCode){
        case 83:
            go("down");
        break;
        
        case 87:
            go("up");
        break;    
        
        case 68:
            go("right");
        break;    
        
        case 65:
            go("left");
        break;
    }            
}

document.onkeydown = przechwyc;

Wszystko ok, ale gdy przytrzymamy klawisz nie jest fajnie :) Jak zrobić aby nasz gracz mógł wykonywać ruch co 0,5 s? Proszę o pomoc :)

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

może tak jak alarmy w GM? coś na zasadzie : moge_sie_ruszac = false; czas = setTimeout("funkcja"); - chociaż w sumie za pomocą samej zmiennej czas można stwierdzić, czy ustawiono czas ( jest też clearTimeout ).

Odnośnik do komentarza
Udostępnij na innych stronach

Hehe też na to wpadłem i tak zrobiłem ale nie chodziło nic (pewnie jakiś błąd) i dlatego spytałem tutaj, dam może ten "drugi" kod:

function OdswiezMape() {
    var req = mint.Request();
    req.Send("map_includes/5x5game.php", "map");
    var req = mint.Request();
    req.Send("map_includes/gracze_obok.php", "gold");
}

var gotowy=true;

function start()
{
gotowy=true;
timer=setTimeout("start()",500);
}
function stop()
{
clear(timer);
}


function go(where) {
            alert(gotowy);
            if(gotowy==true) {
            gotowy=false;
            document.getElementById('hero').style.background= "url(img/hero_"+where+".png)";
            var req = mint.Request();
            req.Send("ruch.php?step_edit="+where, "response");
            document.getElementById('map').style.margin.Left=50;
            OdswiezMape();     
            }
}


function przechwyc(e) {
    var event = window.event || e;
    switch(event.keyCode){
        case 83:
            go("down");
        break;
        
        case 87:
            go("up");
        break;    
        
        case 68:
            go("right");
        break;    
        
        case 65:
            go("left");
        break;
    }            
}

document.onkeydown = przechwyc;

Alert który jest w funkcji go za pierwszym razem pokazuje true ( czyli dobrze) a później już tylko fałsz heh

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...