Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: poruszanie strzałkami - problem na firefoxie
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
wezyrno
Jest to skrypt wprawiający postać w ruch w momencie, gdy wciśniemy poszczególne klawisze strzałek.
Wszystko byłoby pięknie, gdyby na przeglądarce Mozilla Firefox działał równie doskonale co na Google Chrome.

Na Google Chrome postać porusza się płynnie i nie zacina. W przypadku Mozilli Firefox postać na chwile przyspiesza, aby po kilku sekundach całkowicie zwolnić. Za każdym razem od tego momentu, gdy wciskam strzałkę, postać porusza się w bardzo zwolnionym tempie.

Czy moglibyście znaleźć rozwiązanie tego problemu?

Kod
var x1;
var cos2 = 0;
var walking = false;

function start_walking(event) {
    var klawisz = event.keyCode ? event.keyCode :
    event.which ? event.which : event.charCode;
    if(walking == false) {
        
        if(klawisz == 38) {
           x1 = setInterval('tryt('+klawisz+');', 11);
        }
        if(klawisz == 40) {
           x1 = setInterval('tryt('+klawisz+');', 11);
        }
        if(klawisz == 37) {
           x1 = setInterval('tryt('+klawisz+');', 11);
        }
        if(klawisz == 39) {
           x1 = setInterval('tryt('+klawisz+');', 11);
        }
    }
}

function tryt(klawisz) {
    walking = true;

    if(klawisz == 38) {
        var a = document.getElementById('player')
        var pol = a.offsetTop
        a.style.top = pol-1+'px'
    }
    if(klawisz == 40) {
        var a = document.getElementById('player')
        var pol = a.offsetTop
        a.style.top = pol+1+'px'
    }
    if(klawisz == 37) {
        var a = document.getElementById('player')
        var pol = a.offsetLeft
        a.style.left = pol-1+'px'
    }
    if(klawisz == 39) {
        var a = document.getElementById('player')
        var pol = a.offsetLeft
        a.style.left = pol+1+'px'
    }
    ///////////////////////////////////////

    if(klawisz >= 37 && klawisz <=40) {
        cos2 = cos2 + 1;
        if(cos2 > 24 && cos2 < 33) {
            if(cos2 == 32 || cos2 == 32) {
                clearInterval(x1);
                cos2 = 0;
                walking = false;
            }
        }
    } else {
        walking = false;
    }
}
kamil4u
Umieść kod gdzieś na serwerze, razem z HTML i CSS. Np. tu: http://jsfiddle.net/ . Lubię widzieć co się dzieje i naprawiać skrypty( szczególnie cudze ) metodą prób i błędów.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.