Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz
  • 0

Kilkukrotne wykonywanie funkcji


endriu322

Pytanie

Opublikowano

siemka, czy dał by rade ktoś pomóc chodzi o to żeby co jak kliknę "w" to że funkcja "oHero_poz" się wykonuje, teraz się wykonuje ale tylko raz po ponownym kliknięciu nic się nie dzieje

 

Cytat

// wygląd postaci

    $.ajax({

        type: "POST",

        url:"system/php/postac.php",

        datatype:"json",

        cache: false,

        success: function(data)

        {

            for(var numer in data){

                var wiersz = data[numer];      

                var id = wiersz[0];

                var nazwa = wiersz[1];

                var poziom = wiersz[3];

                var ban = wiersz[4];

                var zalogowany = wiersz[5];

                var mapa = wiersz[6];

                var x = wiersz[7];

                var y = wiersz[8];

                var obrazek = wiersz[9];

                var profesja = wiersz[10];

                var zycie = wiersz[11];

                var zycie_max = wiersz[12];

                var exp = wiersz[13];

                var exp_max = 300;

            }

 

            var pozycja_x = x*32

            var pozycja_y = y*32

 

        $("#oHero").css('background-image', 'url("avatar/'+obrazek+'")');

        $("#oHero").css('width', '32px');

        $("#oHero").css('height', '48px');

        $("#oHero").css('position', 'relative');

        $("#oHero").css('left', pozycja_x+'px');

        $("#oHero").css('top', pozycja_y+'px');

        $("#oHero").attr('title', 'Moja postać');

       

           

        },

        error: function()

        {

        console.log("błąd -> postac.js -> wygląd");

        }

       

    }

);

 

// ruch postaci

 

 

 

$(document).ready(function(){

   

    function idz(nr)

    {

        switch(nr)

        {

            case 1: {

                var dodaj_x = dodaj_x-32;

                ruch(-32, 1);

            alert("-32");} break;

           

        }

    }

   

    $(document).keydown(function (event){

        if(event.keyCode==87){idz(1);}

    });

   

});

 

function ruch(x, y){

    $.ajax({

        type: "POST",

        cache: false,

        success: function (){

            setTimeout(oHero_poz(x, y), 100);

        },

        error: function()

        {

        console.log("błąd -> postac.js -> ruch");

        }

    });

}

 

function oHero_poz(x, y)

{

    $("#mapa").css("background-position", x+"px 0px");

}

 

 

076a6e9d-88f4-43bc-ab33-caf22222dd0e (1).jpg

2 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

Opublikowano

Debuguj używając konsoli:

console.log()

Np.

$(document).keydown(function (event){
	if(event.keyCode==87){
		idz(1);
		console.log('zadziało się');
	}
});


Problemem nie jest trigger keyDown, tylko funkcja idź() w której uruchamiasz ruch() ze stałymi, a nie zmiennymi.
Kod powinien wyglądać tak:

Spoiler



function idz(nr){
	switch(nr){
		case 1:
			var zmiana = pozycja_x-32;
			ruch(zmiana, pozycja_y);
			alert("-32");
			break;
		}
}

Gdzie pozycja_x i pozycja_y powinny być zmiennymi globalnymi czyli zadeklarowanymi przed zapytaniem do system/php/postac.php i aktualizowane dopiero w momencie wykonania zapytania.

 

Podziel się efektami jak skończysz :) Chętnie zobaczę co zakodowałeś.

Pozdrawiam.

= SygnaturA =

Made by... ME. 

 

Opublikowano

Damian dobrze radzi, ja dodam od siebie żebyś nie tworzył funkcji o nazwach ruch() czy idz() lub zmiennych dodaj_x. To bardzo uprzykrza kod.
Zamiast tego użyj np:

ruch() = move()

idz() = go()

var dodaj_x = var add_posx 

Jestem programistą, zaufaj mi :)

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...