Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z chodzeniem po mapie
Forum PHP.pl > Forum > Po stronie przeglądarki
legado
witam mam problem z chodzeniem po mapie jak naciszne klawisz to postac ciagle biegnie

oto kod:
$(document).ready(function(){

$("div#l").click(function(){
wyslij('lewo',8,0,1);
});
$("div#p").click(function(){
wyslij('prawo',-8,0,2);
});
$("div#g").click(function(){

wyslij('gora',0,8,3);
});
$("div#d").click(function(){
wyslij('dol',0,-8,0);
});
$("div#oHero").click(function(){
});

$(document).keydown(function (event) {
if(event.keyCode==65 && chatmode==0){$("div#l").click();}
if(event.keyCode==87 && chatmode==0){$("div#g").click();}
if(event.keyCode==68 && chatmode==0){$("div#p").click();}
if(event.keyCode==83 && chatmode==0){$("div#d").click();}
});
});

function wyslij(strona,ox,oy,kierunek){
$.ajax({
type: "POST",
url: "js/idz.php",
data:"move="+strona,
success: function(msg){
if(msg){
$('#oMap').css("background-image","url("+msg+")");
setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(0,"+kierunek+");",100);
setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(1,"+kierunek+");",200);
setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(2,"+kierunek+");",300);
setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(3,"+kierunek+");",400);
setTimeout("animation(0,"+kierunek+");",500);
}

}
});
}

function map_poz(x,y){
$("#oMap").css("background-position", x+"px "+y+"px");
}
function animation(klatka,kierunek){
$("#oHero").css("background-position",(-klatka*32)+"px "+(-kierunek*48)+"px");
}
// GOOD GAME
nospor
Uzywaj BBCODE.

Czy problem jest zarowno w przypadku przycisniecia strzalki na klawiaturze, jak i w przypadku kliknięcia myszką na danym divie z kierunkiem?
legado
Cytat(nospor @ 9.10.2014, 10:58:16 ) *
Uzywaj BBCODE.

Czy problem jest zarowno w przypadku przycisniecia strzalki na klawiaturze, jak i w przypadku kliknięcia myszką na danym divie z kierunkiem?


myszką nie da się chodzić, tylko w,a,s,d

nospor
To po grzyba klikajac w klawiature wymuszasz klikanie w diva??

Zamiast
$("div#l").click();
dawaj to co ma robic czyli to:
wyslij('lewo',8,0,1);

Popraw to i powiedz czy nadal leci jak opetany.
legado
Cytat(nospor @ 9.10.2014, 11:34:50 ) *
To po grzyba klikajac w klawiature wymuszasz klikanie w diva??

Zamiast
$("div#l").click();
dawaj to co ma robic czyli to:
wyslij('lewo',8,0,1);

Popraw to i powiedz czy nadal leci jak opetany.


dalej leci jak opentany :]
zrobiłem to tak

Cytat
$(document).keydown(function (event) {
if(event.keyCode==65 && chatmode==0){wyslij('lewo',8,0,1);}
if(event.keyCode==87 && chatmode==0){wyslij('gora',0,8,3);}
if(event.keyCode==68 && chatmode==0){wyslij('prawo',-8,0,2);}
if(event.keyCode==83 && chatmode==0){wyslij('dol',0,-8,0);}
nospor
Na poczatku funkcji wyslij daj alerta

Kod
function wyslij(strona,ox,oy,kierunek){
alert('Blabla');

//reszta kodu

Jak klikniesz na W to ile widzisz alertow?
legado
Cytat(nospor @ 9.10.2014, 11:52:52 ) *
Na poczatku funkcji wyslij daj alerta

Kod
function wyslij(strona,ox,oy,kierunek){
alert('Blabla');

//reszta kodu

Jak klikniesz na W to ile widzisz alertow?


klikam a idzie postać o jedną kratke i wyskauje komunikat blabla
nospor
No dobra, ale tylko raz? Jak klikniesz ok to sie nowy nie pojawia juz? Czy sie odrazu pojawia nowy? A postac dalej biegnie?
legado
Cytat(nospor @ 9.10.2014, 11:56:47 ) *
No dobra, ale tylko raz? Jak klikniesz ok to sie nowy nie pojawia juz? Czy sie odrazu pojawia nowy? A postac dalej biegnie?

1raz sie pojawia
znaczy jak przytrzymam klawisz to wyskakuje co chwile
nospor
Chodzi mi o jedno klikniecie klawisza W. Alert pojawia sie tylko jeden raz? Jak kliknieesz ok na alerrcie to juz drugi raz samo nie wyskoczy?
I postac przestaje juz biec?
legado
Cytat(nospor @ 9.10.2014, 11:59:32 ) *
Chodzi mi o jedno klikniecie klawisza W. Alert pojawia sie tylko jeden raz? Jak kliknieesz ok na alerrcie to juz drugi raz samo nie wyskoczy?
I postac przestaje juz biec?

tak klikam jeden raz wyskakuje komunikat blabla postać przesuwa się o jedną kratke i stoi jak klikne drugi raz a to wyskakuje znowu alert blabla i przesuwa się o jedną kratke
nospor
Ok. Wywal tego alerta i daj return do kodu za ifami

Kod
$(document).keydown(function (event) {
if(event.keyCode==65 && chatmode==0){wyslij('lewo',8,0,1);}
if(event.keyCode==87 && chatmode==0){wyslij('gora',0,8,3);}
if(event.keyCode==68 && chatmode==0){wyslij('prawo',-8,0,2);}
if(event.keyCode==83 && chatmode==0){wyslij('dol',0,-8,0);}
return true;// jak to nie pomoze to daj: return false;
legado
Cytat(nospor @ 9.10.2014, 12:13:33 ) *
Ok. Wywal tego alerta i daj return do kodu za ifami

Kod
$(document).keydown(function (event) {
if(event.keyCode==65 && chatmode==0){wyslij('lewo',8,0,1);}
if(event.keyCode==87 && chatmode==0){wyslij('gora',0,8,3);}
if(event.keyCode==68 && chatmode==0){wyslij('prawo',-8,0,2);}
if(event.keyCode==83 && chatmode==0){wyslij('dol',0,-8,0);}
return true;// jak to nie pomoze to daj: return false;

no prawie wszystko jest dobrze ale jak wcisnę kalwisz i przytrzymam i puszczę to dalej biegnie i po jakimś czasie sie zatrzymuje
może wrzucę na stronę zalogujesz się i sprawdzisz
nospor
Cytat
ale jak wcisnę kalwisz i przytrzymam i puszczę to dalej biegnie i po jakimś czasie sie zatrzymuje
Zgadza sie. Klikajac guzik, wysylasz żądanie AJAX do serwera. To żądanie chwilkę trwa. Trzymając caly czas guzik, wysylasz całą masę tych żądan i sorry, ale one w sumie tez trwają dlugo i skonczą się dopiero po jakims czasie gdy puscisz guzik. Tak wiec z technicznego punktu widzenia wszystko teraz jest ok.
legado
Cytat(nospor @ 9.10.2014, 12:19:38 ) *
Zgadza sie. Klikajac guzik, wysylasz żądanie AJAX do serwera. To żądanie chwilkę trwa. Trzymając caly czas guzik, wysylasz całą masę tych żądan i sorry, ale one w sumie tez trwają dlugo i skonczą się dopiero po jakims czasie gdy puscisz guzik. Tak wiec z technicznego punktu widzenia wszystko teraz jest ok.

a jakoś ustawić limit np jak wcisnę klawisz to postać idzie np co 0.5sec co kratke
nospor
To zrob ifa, ze dopoki nie skonczylo się jedno żądanie, nie pozwalaj na wysylanie kolejnego. To rozwiąze twoj problem
legado
Cytat(nospor @ 9.10.2014, 12:25:48 ) *
To zrob ifa, ze dopoki nie skonczylo się jedno żądanie, nie pozwalaj na wysylanie kolejnego. To rozwiąze twoj problem

a mógłbyś trochę pomóc>? bo ja dopiero zaczynam się uczyć.
markuz
[JAVASCRIPT] pobierz, plaintext
  1. var loading = false; // na poczatku pliku z js
  2. ...
  3. if(loading) return false; // na poczatku funkcji wyslij()
  4. loading = true;
  5. ...
  6. loading = false; // w funkcji success w żądaniu ajax.
[JAVASCRIPT] pobierz, plaintext
legado
Cytat(markuz @ 9.10.2014, 12:33:59 ) *
[JAVASCRIPT] pobierz, plaintext
  1. var loading = false; // na poczatku pliku z js
  2. ...
  3. if(loading) return false; // na poczatku funkcji wyslij()
  4. loading = true;
  5. ...
  6. loading = false; // w funkcji success w żądaniu ajax.
[JAVASCRIPT] pobierz, plaintext

zrobiłem to tak i teaz mogę tylko 1 raz się ruszyć dopóki strony nie odswieże

Cytat
var loading = false;
$(document).ready(function(){

$("div#l").click(function(){
wyslij('lewo',8,0,1);
});
$("div#p").click(function(){
wyslij('prawo',-8,0,2);
});
$("div#g").click(function(){

wyslij('gora',0,8,3);
});
$("div#d").click(function(){
wyslij('dol',0,-8,0);
});
$("div#oHero").click(function(){
});

$(document).keydown(function (event) {
if(event.keyCode==65 && chatmode==0){if(loading) return false;wyslij('lewo',8,0,1);}
loading = true;
if(event.keyCode==87 && chatmode==0){if(loading) return false;wyslij('gora',0,8,3);}
loading = true;
if(event.keyCode==68 && chatmode==0){if(loading) return false;wyslij('prawo',-8,0,2);}
loading = true;
if(event.keyCode==83 && chatmode==0){if(loading) return false;wyslij('dol',0,-8,0);}
loading = true;
return false;
});
});

function wyslij(strona,ox,oy,kierunek){
$.ajax({
type: "POST",
url: "system/idz.php",
data:"move="+strona,
success : function (msg){
loading = false;if (msg){
$('#oMap').css("background-image","url("+msg+")");
setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(0,"+kierunek+");",100);
setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(1,"+kierunek+");",200);
setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(2,"+kierunek+");",300);
setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(3,"+kierunek+");",400);
setTimeout("animation(0,"+kierunek+");",500);
}

}
});
}

function map_poz(x,y){
$("#oMap").css("background-position", x+"px "+y+"px");
}
function animation(klatka,kierunek){
$("#oHero").css("background-position",(-klatka*32)+"px "+(-kierunek*48)+"px");
}
// GOOD GAME
nospor
Dostales szczegołową instrukcje krok po kroku co masz zrobic. Napisaną po polsku. Kurczze, zastosuj sie do kazdego kroku to zadziala. Bo teraz jedynie pierwszy krok wykonales poprawnie.
legado
Cytat(nospor @ 9.10.2014, 16:19:41 ) *
Dostales szczegołową instrukcje krok po kroku co masz zrobic. Napisaną po polsku. Kurczze, zastosuj sie do kazdego kroku to zadziala. Bo teraz jedynie pierwszy krok wykonales poprawnie.

no nie rozumiem tego za bardzo bo z funkcjami nie miałem doczynienia
jeśli dobrze to zrozumiałem to chodzi w drugim punkcie o to
if(loading) return false;function wyslij(strona,ox,oy,kierunek)
loading = true;{
$.ajax({
type: "POST",
url: "system/idz.php",
data:"move="+strona,
success : loading = false;function (msg){
if (msg){
nospor
To jest funkcja:

Kod
function jakasfunkcja() {
}


Tu jest poczatek funkcji:
Kod
function jakasfunkcja() {
TU JEST POCZATEK

}


a nie tu
Kod
function jakasfunkcja() A NIE TU {
}


Podobnie jest z SUCCESS
legado
Cytat(nospor @ 9.10.2014, 18:51:14 ) *
To jest funkcja:

Kod
function jakasfunkcja() {
}


Tu jest poczatek funkcji:
Kod
function jakasfunkcja() {
TU JEST POCZATEK

}


a nie tu
Kod
function jakasfunkcja() A NIE TU {
}


Podobnie jest z SUCCESS



Cytat
var loading = false;
$(document).ready(function(){

$("div#l").click(function(){
if(loading) return false;wyslij('lewo',8,0,1)loading = true;
});
$("div#p").click(function(){
if(loading) return false;wyslij('prawo',-8,0,2)loading = true;
});
$("div#g").click(function(){

if(loading) return false;wyslij('gora',0,8,3)loading = true;
});
$("div#d").click(function(){
if(loading) return false;wyslij('dol',0,-8,0)loading = true;
});
$("div#oHero").click(function(){
});

$(document).keyup(function (event) {
if(event.keyCode==65 && chatmode==0){if(loading) return false;wyslij('lewo',8,0,1)loading = true;}
if(event.keyCode==87 && chatmode==0){if(loading) return false;wyslij('gora',0,8,3)loading = true;}
if(event.keyCode==68 && chatmode==0){if(loading) return false;wyslij('prawo',-8,0,2)loading = true;}
if(event.keyCode==83 && chatmode==0){if(loading) return false;wyslij('dol',0,-8,0)loading = true;}
});
});

function wyslij(strona,ox,oy,kierunek){
$.ajax({
type: "POST",
url: "system/idz.php",
data:"move="+strona,
success : function (msg){
loading = false;
if (msg){
$('#oMap').css("background-image","url("+msg+")");
setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(0,"+kierunek+");",100);
setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(1,"+kierunek+");",200);
setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(2,"+kierunek+");",300);
setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(3,"+kierunek+");",400);
setTimeout("animation(0,"+kierunek+");",500);
}

}
});
}

function map_poz(x,y){
$("#oMap").css("background-position", x+"px "+y+"px");
}
function animation(klatka,kierunek){
$("#oHero").css("background-position",(-klatka*32)+"px "+(-kierunek*48)+"px");
}
// GOOD GAME


teraz chyba dobrze zrobilem?
nospor
if(loading) return false; // na poczatku funkcji wyslij()
loading = true;

Pokaz mi prosze gdzie to masz na poczatku funkcji wyslij().
legado
Cytat(nospor @ 9.10.2014, 19:50:11 ) *
if(loading) return false; // na poczatku funkcji wyslij()
loading = true;

Pokaz mi prosze gdzie to masz na poczatku funkcji wyslij().

sam mówiłeś ze początek funkcji {

jest tu
}

nwm wogóle nie mogę tego zrozumieć closedeyes.gif

Cytat
$(document).keydown(function (event) {
if(loading) return false;if(event.keyCode==65 && chatmode==0){loading = true;wyslij('lewo',8,0,1);}
może tak?
nospor
Skoro się uczysz, to zacznij od podstaw. Naucz się co to jest funkcja. Co to jest nazwa funkcji, a zobaczysz, zrozumiesz co ci napisano.
A tak teraz, jak ty nie wiesz, gdzie jest początek funkcji wyslij, mimo, że ci go pokazalem, to jeszcze znaczy, ze za wczesnie wziales się za tę robote smile.gif
legado
Cytat(nospor @ 9.10.2014, 20:15:23 ) *
Skoro się uczysz, to zacznij od podstaw. Naucz się co to jest funkcja. Co to jest nazwa funkcji, a zobaczysz, zrozumiesz co ci napisano.
A tak teraz, jak ty nie wiesz, gdzie jest początek funkcji wyslij, mimo, że ci go pokazalem, to jeszcze znaczy, ze za wczesnie wziales się za tę robote smile.gif

może i tak ale chodzenie jest mi potrzebne ;]
z c++,php nie mam zadnych problemów ani z lua,python a z tym mam ogromny bo wogóle nie rozumiem
nospor
Z php nie maasz zadnych problemow??

Wstaw mi wiec prosze na poczatek funkcji Wyslij:
  1. function Wyslij(){
  2. echo 'Mysl chlopie';
  3. }

nastepującą linijkę:
echo 'To jest początek funkcji';
legado
Cytat(nospor @ 9.10.2014, 22:15:10 ) *
Z php nie maasz zadnych problemow??

Wstaw mi wiec prosze na poczatek funkcji Wyslij:
  1. function Wyslij(){
  2. echo 'Mysl chlopie';
  3. }

nastepującą linijkę:
echo 'To jest początek funkcji';


prosze
  1. function Wyslij (){
  2. echo 'To jest początek funkcji';
  3. }
markuz
Teraz to samo z java script:
[JAVASCRIPT] pobierz, plaintext
  1. function wyslij() {
  2. console.log('Myśl chłopie');
  3. }
[JAVASCRIPT] pobierz, plaintext


wstaw na poczatku funkcji console.log('To jest początek funkcji');
Dasz rade!
legado
Cytat(markuz @ 10.10.2014, 10:12:08 ) *
Teraz to samo z java script:
[JAVASCRIPT] pobierz, plaintext
  1. function wyslij() {
  2. console.log('Myśl chłopie');
  3. }
[JAVASCRIPT] pobierz, plaintext


wstaw na poczatku funkcji console.log('To jest początek funkcji');
Dasz rade!


no to chyba tak samo
[JAVASCRIPT] pobierz, plaintext
  1. function wyslij() {
  2. console.log('To jest początek funkcji');
  3. }
[JAVASCRIPT] pobierz, plaintext

markuz
Brawo!

To teraz coś trudniejszego.
Na początku tej funkcji:
[JAVASCRIPT] pobierz, plaintext
  1. function wyslij(strona,ox,oy,kierunek) {
  2. $.ajax({
  3. type: "POST",
  4. url: "system/idz.php",
  5. data:"move="+strona,
  6. success : function(msg){
  7. loading = false;
  8. if(msg){
  9. $('#oMap').css("background-image","url("+msg+")");
  10. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(0,"+kierunek+");",100);
  11. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(1,"+kierunek+");",200);
  12. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(2,"+kierunek+");",300);
  13. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(3,"+kierunek+");",400);
  14. setTimeout("animation(0,"+kierunek+");",500);
  15. }
  16. }
  17. });
  18. }
[JAVASCRIPT] pobierz, plaintext


wstaw ten fragment kodu:
[JAVASCRIPT] pobierz, plaintext
  1. if(loading) return false;
  2. loading = true;
[JAVASCRIPT] pobierz, plaintext
legado
Cytat(markuz @ 10.10.2014, 10:36:55 ) *
Brawo!

To teraz coś trudniejszego.
Na początku tej funkcji:
[JAVASCRIPT] pobierz, plaintext
  1. function wyslij(strona,ox,oy,kierunek) {
  2. $.ajax({
  3. type: "POST",
  4. url: "system/idz.php",
  5. data:"move="+strona,
  6. success : function(msg){
  7. loading = false;
  8. if(msg){
  9. $('#oMap').css("background-image","url("+msg+")");
  10. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(0,"+kierunek+");",100);
  11. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(1,"+kierunek+");",200);
  12. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(2,"+kierunek+");",300);
  13. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(3,"+kierunek+");",400);
  14. setTimeout("animation(0,"+kierunek+");",500);
  15. }
  16. }
  17. });
  18. }
[JAVASCRIPT] pobierz, plaintext


wstaw ten fragment kodu:
[JAVASCRIPT] pobierz, plaintext
  1. if(loading) return false;
  2. loading = true;
[JAVASCRIPT] pobierz, plaintext


z tym już mam problem i pewnie zle zrobiłem
[JAVASCRIPT] pobierz, plaintext
  1. function wyslij(strona,ox,oy,kierunek) {
  2. if(loading) return false;
  3. $.ajax({
  4. type: "POST",
  5. url: "system/idz.php",
  6. data:"move="+strona,
  7. success : function(msg){
  8. loading = true;
  9. if(msg){
  10. $('#oMap').css("background-image","url("+msg+")");
  11. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(0,"+kierunek+");",100);
  12. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(1,"+kierunek+");",200);
  13. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(2,"+kierunek+");",300);
  14. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(3,"+kierunek+");",400);
  15. setTimeout("animation(0,"+kierunek+");",500);
  16. }
  17. }
  18. });
  19. }
[JAVASCRIPT] pobierz, plaintext
markuz
Ok. To teraz na "chłopski rozum".

Zmieńmy nazwę zmiennej loading na "wczytywanie".

Czyli na początku pliku umieszczasz:
[JAVASCRIPT] pobierz, plaintext
  1. var wczytywanie = false;
[JAVASCRIPT] pobierz, plaintext

Jak zapewne wiesz zmienna wczytywanie jest zmienną typu bool czyli zawiera PRAWDĘ lub FAŁSZ.
W naszym przypadku zawiera na starcie FAŁSZ - dzieje się tak ponieważ zakładamy, że nic się nie wczytuje na początku działania skryptu (gracz nie wykonał żadnego ruchu czyli wczytywanie = FAŁSZ).

Teraz jeżeli gracz chce wykonać ruch (czyli wykonać funkcję wyślij()) chcemy sprawdzić czy coś się wczytuje. Jeżeli TAK (wczytywanie == PRAWDA(TRUE)) to przerwiemy funkcje (nie pozwolimy graczowi na wykonanie kolejnego ruchu ponieważ ten poprzedni się jeszcze nie wczytał). Za to odpowiada kod:
[JAVASCRIPT] pobierz, plaintext
  1. if(wczytywanie == true) {
  2. return false;
  3. }
[JAVASCRIPT] pobierz, plaintext

Gdzie to return false; oznacza przerwanie funkcji wyslij() (Funkcja zwraca FAŁSZ - nic się nie dzieje).

Lecimy dalej. Przyjmijmy, że funkcja się nie przerwała ponieważ nasza zmienna wczytywanie była równa false (FAŁSZ). Teraz wypadało by jakoś poinformować "skrypt", że ruch się zaczął wykonywać czyli zaczął się WCZYTYWAĆ. Niezbędne jest zatem dodanie zaraz po warunku if (patrz wyżej) tej linijki:
[JAVASCRIPT] pobierz, plaintext
  1. wczytywanie = true;
[JAVASCRIPT] pobierz, plaintext


Teraz trzeba jeszcze przywrócić zmiennej wczytywanie wartość fałsz (false) wtedy gdy wczytywanie się zakończy. W twoim przypadku będzie to funkcja success w AJAX w funkcji wyślij(). Czyli na początku funkcji success przyjmujemy, że wczytywanie się zakończyło czyli dodajemy linijkę:
[JAVASCRIPT] pobierz, plaintext
  1. wczytywanie = false;
[JAVASCRIPT] pobierz, plaintext


Teraz wstaw to do swojego kodu.
legado
Cytat(markuz @ 10.10.2014, 11:00:09 ) *
Ok. To teraz na "chłopski rozum".

Zmieńmy nazwę zmiennej loading na "wczytywanie".

Czyli na początku pliku umieszczasz:
[JAVASCRIPT] pobierz, plaintext
  1. var wczytywanie = false;
[JAVASCRIPT] pobierz, plaintext

Jak zapewne wiesz zmienna wczytywanie jest zmienną typu bool czyli zawiera PRAWDĘ lub FAŁSZ.
W naszym przypadku zawiera na starcie FAŁSZ - dzieje się tak ponieważ zakładamy, że nic się nie wczytuje na początku działania skryptu (gracz nie wykonał żadnego ruchu czyli wczytywanie = FAŁSZ).

Teraz jeżeli gracz chce wykonać ruch (czyli wykonać funkcję wyślij()) chcemy sprawdzić czy coś się wczytuje. Jeżeli TAK (wczytywanie == PRAWDA(TRUE)) to przerwiemy funkcje (nie pozwolimy graczowi na wykonanie kolejnego ruchu ponieważ ten poprzedni się jeszcze nie wczytał). Za to odpowiada kod:
[JAVASCRIPT] pobierz, plaintext
  1. if(wczytywanie == true) {
  2. return false;
  3. }
[JAVASCRIPT] pobierz, plaintext

Gdzie to return false; oznacza przerwanie funkcji wyslij() (Funkcja zwraca FAŁSZ - nic się nie dzieje).

Lecimy dalej. Przyjmijmy, że funkcja się nie przerwała ponieważ nasza zmienna wczytywanie była równa false (FAŁSZ). Teraz wypadało by jakoś poinformować "skrypt", że ruch się zaczął wykonywać czyli zaczął się WCZYTYWAĆ. Niezbędne jest zatem dodanie zaraz po warunku if (patrz wyżej) tej linijki:
[JAVASCRIPT] pobierz, plaintext
  1. wczytywanie = true;
[JAVASCRIPT] pobierz, plaintext


Teraz trzeba jeszcze przywrócić zmiennej wczytywanie wartość fałsz (false) wtedy gdy wczytywanie się zakończy. W twoim przypadku będzie to funkcja success w AJAX w funkcji wyślij(). Czyli na początku funkcji success przyjmujemy, że wczytywanie się zakończyło czyli dodajemy linijkę:
[JAVASCRIPT] pobierz, plaintext
  1. wczytywanie = false;
[JAVASCRIPT] pobierz, plaintext


Teraz wstaw to do swojego kodu.


no dobra rozumiem co to jest false i true tyko ja mam problem w tym ze jak mam function :
[JAVASCRIPT] pobierz, plaintext
  1. function wyslij(strona,ox,oy,kierunek){
  2. $.ajax({
  3. type: "POST",
  4. url: "system/idz.php",
  5. data:"move="+strona,
  6. success : function (msg){
  7. if (msg){
  8. $('#oMap').css("background-image","url("+msg+")");
  9. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(0,"+kierunek+");",100);
  10. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(1,"+kierunek+");",200);
  11. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(2,"+kierunek+");",300);
  12. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(3,"+kierunek+");",400);
  13. setTimeout("animation(0,"+kierunek+");",500);
  14. }
  15.  
  16. }
  17. });
  18. }
[JAVASCRIPT] pobierz, plaintext

to już się gubie gdzie jest początek funkcji a gdzie koniec
markuz
Używaj wcięć jak myślisz poważnie o programowaniu. Bez tego ciężko się połapać..

[JAVASCRIPT] pobierz, plaintext
  1. function wyslij(strona,ox,oy,kierunek){
  2. // TO JEST POCZATEK FUNKCJI wyslij()
  3. $.ajax({
  4. type: "POST",
  5. url: "system/idz.php",
  6. data:"move="+strona,
  7. success : function (msg){
  8. // TO JEST POCZĄTEK FUNKCJI success
  9. if (msg){
  10. $('#oMap').css("background-image","url("+msg+")");
  11. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(0,"+kierunek+");",100);
  12. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(1,"+kierunek+");",200);
  13. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(2,"+kierunek+");",300);
  14. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(3,"+kierunek+");",400);
  15. setTimeout("animation(0,"+kierunek+");",500);
  16. }
  17.  
  18. }
  19. });
  20. }
[JAVASCRIPT] pobierz, plaintext
legado
Cytat(markuz @ 10.10.2014, 11:36:46 ) *
Używaj wcięć jak myślisz poważnie o programowaniu. Bez tego ciężko się połapać..

[JAVASCRIPT] pobierz, plaintext
  1. function wyslij(strona,ox,oy,kierunek){
  2. // TO JEST POCZATEK FUNKCJI wyslij()
  3. $.ajax({
  4. type: "POST",
  5. url: "system/idz.php",
  6. data:"move="+strona,
  7. success : function (msg){
  8. // TO JEST POCZĄTEK FUNKCJI success
  9. if (msg){
  10. $('#oMap').css("background-image","url("+msg+")");
  11. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(0,"+kierunek+");",100);
  12. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(1,"+kierunek+");",200);
  13. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(2,"+kierunek+");",300);
  14. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(3,"+kierunek+");",400);
  15. setTimeout("animation(0,"+kierunek+");",500);
  16. }
  17.  
  18. }
  19. });
  20. }
[JAVASCRIPT] pobierz, plaintext


to jeśli zrobiłem to tak:
[JAVASCRIPT] pobierz, plaintext
  1. var loading = false;
  2. $(document).ready(function(){
  3.  
  4. $("div#l").click(function()if(loading == true) {
  5. wyslij('lewo',8,0,1);
  6. return false;
  7. });
  8. $("div#p").click(function(){
  9. wyslij('prawo',-8,0,2);
  10. });
  11. $("div#g").click(function(){
  12.  
  13. wyslij('gora',0,8,3);
  14. });
  15. $("div#d").click(function(){
  16. wyslij('dol',0,-8,0);
  17. });
  18. $("div#oHero").click(function(){
  19. });
  20.  
  21. $(document).keydown(function (event) {
  22. if(loading) return false;
  23. if(event.keyCode==65 && chatmode==0){wyslij('lewo',8,0,1);}
  24. if(event.keyCode==87 && chatmode==0){wyslij('gora',0,8,3);}
  25. if(event.keyCode==68 && chatmode==0){wyslij('prawo',-8,0,2);}
  26. if(event.keyCode==83 && chatmode==0){wyslij('dol',0,-8,0);}
  27. loading = true;
  28. });
  29. });
  30.  
  31. function wyslij(strona,ox,oy,kierunek){
  32. if(loading) return false;
  33. $.ajax({
  34. type: "POST",
  35. url: "system/idz.php",
  36. data:"move="+strona,
  37. success : function (msg){
  38. loading = true;if (msg){
  39. $('#oMap').css("background-image","url("+msg+")");
  40. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(0,"+kierunek+");",100);
  41. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(1,"+kierunek+");",200);
  42. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(2,"+kierunek+");",300);
  43. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(3,"+kierunek+");",400);
  44. setTimeout("animation(0,"+kierunek+");",500);
  45. }
  46.  
  47. }
  48. });
  49. }
  50.  
  51. function map_poz(x,y){
  52. $("#oMap").css("background-position", x+"px "+y+"px");
  53. }
  54. function animation(klatka,kierunek){
  55. $("#oHero").css("background-position",(-klatka*32)+"px "+(-kierunek*48)+"px");
  56. }
[JAVASCRIPT] pobierz, plaintext

to gdzie mniej więcej popełniłem błąd?
markuz
Wstawiłeś 3 razy warunek if(loading) albo if(loading == true) a powinieneś tylko raz na poczatku funkcji wyślij. Ja juz się poddaje wink.gif Może ktoś inny będzie w stanie Ci to wytłumaczyć. Zachęcam jednak do przeczytania kursu np. tego.
legado
Cytat(markuz @ 10.10.2014, 11:51:02 ) *
Wstawiłeś 3 razy warunek if(loading) albo if(loading == true) a powinieneś tylko raz na poczatku funkcji wyślij. Ja juz się poddaje wink.gif Może ktoś inny będzie w stanie Ci to wytłumaczyć. Zachęcam jednak do przeczytania kursu np. tego.

a ja to co mam powiedzieć? drugi dzień nad tym siedze i nie mogę tego pojąć ;]

zrobiłem to jeszcze tak:
[JAVASCRIPT] pobierz, plaintext
  1. var loading = false;
  2. $(document).ready(function(){
  3.  
  4. $("div#l").click(function(){
  5. wyslij('lewo',8,0,1);
  6. });
  7. $("div#p").click(function(){
  8. wyslij('prawo',-8,0,2);
  9. });
  10. $("div#g").click(function(){
  11.  
  12. wyslij('gora',0,8,3);
  13. });
  14. $("div#d").click(function(){
  15. wyslij('dol',0,-8,0);
  16. });
  17. $("div#oHero").click(function(){
  18. });
  19.  
  20. $(document).keydown(function (event) {
  21. if(event.keyCode==65 && chatmode==0){wyslij('lewo',8,0,1);}
  22. if(event.keyCode==87 && chatmode==0){wyslij('gora',0,8,3);}
  23. if(event.keyCode==68 && chatmode==0){wyslij('prawo',-8,0,2);}
  24. if(event.keyCode==83 && chatmode==0){wyslij('dol',0,-8,0);}
  25. });
  26. });
  27.  
  28. function wyslij(strona,ox,oy,kierunek){
  29. if(loading) return false;
  30. loading = true;
  31. $.ajax({
  32. type: "POST",
  33. url: "system/idz.php",
  34. data:"move="+strona,
  35. success : function (msg){
  36. loading = false;
  37. if (msg){
  38. $('#oMap').css("background-image","url("+msg+")");
  39. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(0,"+kierunek+");",100);
  40. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(1,"+kierunek+");",200);
  41. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(2,"+kierunek+");",300);
  42. setTimeout("map_poz(x+="+ox+",y+="+oy+");animation(3,"+kierunek+");",400);
  43. setTimeout("animation(0,"+kierunek+");",500);
  44. }
  45.  
  46. }
  47. });
  48. }
  49.  
  50. function map_poz(x,y){
  51. $("#oMap").css("background-position", x+"px "+y+"px");
  52. }
  53. function animation(klatka,kierunek){
  54. $("#oHero").css("background-position",(-klatka*32)+"px "+(-kierunek*48)+"px");
  55. }
[JAVASCRIPT] pobierz, plaintext
markuz
Teraz jest dobrze. Powinno działać.
legado
Cytat(markuz @ 10.10.2014, 12:06:47 ) *
Teraz jest dobrze. Powinno działać.

nie działa ;]
markuz
To w 10 linijce dodaj console.log('Dlaczego nie działa?);
...

A tak na poważnie.
1. Czy konsola zwraca jakieś błędy?
2. Czym objawia się "nie działa"?
3. Dla testów zrób Alert-a zaraz po linijce wczytywanie = true. I Powiedz jak często się pokazuje.
legado
Cytat(markuz @ 10.10.2014, 12:55:42 ) *
To w 10 linijce dodaj console.log('Dlaczego nie działa?);
...

A tak na poważnie.
1. Czy konsola zwraca jakieś błędy?
2. Czym objawia się "nie działa"?
3. Dla testów zrób Alert-a zaraz po linijce wczytywanie = true. I Powiedz jak często się pokazuje.

postać bardzo szybko ciągle biega
i np idę w góre chce iść w bok to jest stop i po chwili dopiero idzie
markuz
Nie ma w programowaniu określenia "postać bardzo szybko ciągle biega". Jeżeli twój problem definiujesz w ten sposób to oto moje sugestie:
- Załóż jej cięższe buty
- Przywiąż coś ciężkiego do nogi
... facepalmxd.gif
legado
Cytat(markuz @ 10.10.2014, 14:35:44 ) *
Nie ma w programowaniu określenia "postać bardzo szybko ciągle biega". Jeżeli twój problem definiujesz w ten sposób to oto moje sugestie:
- Załóż jej cięższe buty
- Przywiąż coś ciężkiego do nogi
... facepalmxd.gif

no chodzi szybko tak to jest ok no i jeszcze chcę np odrazu w bok iść to jest stop przez chwilę
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.