Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jQuery] Obsługa klawiatury
remosek
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 6.07.2010

Ostrzeżenie: (0%)
-----


Na początku wrzuce kodzik
  1. $(window).bind("keydown", function(oEvent)
  2. {
  3. if(oEvent.keyCode == 87 || oEvent.keyCode == 38)
  4. {
  5. if(go==true)
  6. {
  7. send(0,75,0,1);
  8. }
  9. }
  10. if(oEvent.keyCode == 65 || oEvent.keyCode == 37)
  11. {
  12. if(go==true)
  13. {
  14. send(75,0,3,2);
  15. }
  16. }
  17. if(oEvent.keyCode == 83 || oEvent.keyCode == 40)
  18. {
  19. if(go==true)
  20. {
  21. send(0,-75,2,3);
  22. }
  23. }
  24. if(oEvent.keyCode == 68 || oEvent.keyCode == 39)
  25. {
  26. if(go==true)
  27. {
  28. send(-75,0,1,4);
  29. }
  30. }
  31. });

Mam problem z tym kodzikiem gdyż jak przyrzymam jeden z klawiszy np W, to skrypt omija sprawdzanie czy go==true i odrazu wykonuje funkcje send. wrzuce kawałek odpowiedzialny za zmienianie go z false do true.
  1. function send(ox,oy,direction)
  2. {
  3. $.ajax({
  4. type: "POST",
  5. url: "checkField.php",
  6. data:"nx="+(x2)+"&ny="+(y2)+"&nisland="+(island),
  7. success: function(msg){
  8. if(msg){
  9. go=false;
  10. setTimeout("map_pos(x+="+(ox/4)+",y+="+(oy/4)+");animation(0,"+direction+");",50);
  11. setTimeout("map_pos(x+="+(ox/4)+",y+="+(oy/4)+");animation(1,"+direction+");",100);
  12. setTimeout("map_pos(x+="+(ox/4)+",y+="+(oy/4)+");animation(2,"+direction+");",150);
  13. setTimeout("map_pos(x+="+(ox/4)+",y+="+(oy/4)+");animation(1,"+direction+");",200);
  14. setTimeout("go=true;",220);
  15. } else {
  16. alert("Error!");
  17. }
  18. }
  19. });
  20. }

Licze na szybkie odpowiedzi (IMG:style_emoticons/default/smile.gif) )

Ten post edytował remosek 26.07.2012, 23:31:02
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
piotrex41
post
Post #2





Grupa: Zarejestrowani
Postów: 168
Pomógł: 26
Dołączył: 15.09.2011
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


A może by tak użyć .keyup(); lub .bind("keyup", function(oEvent){ ... }); ? Wtedy skrypt uruchomi działanie po zwolnieniu klawisza (kiedy zostanie wciśnięty i "puszczony").

Ten post edytował piotrex41 27.07.2012, 07:53:01
Go to the top of the page
+Quote Post
remosek
post
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 6.07.2010

Ostrzeżenie: (0%)
-----


wpadłem na to dawno ale nie chce tego z 2 powodów:
1. Chce gdy się przytrzyma klawisz to aby postać chodzila po mapie, a nie gdy sie zwolni.
2. Jezli szybko zacznie sie klikać to i tak omija blokadae go=true / go=false
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Podpowiedź: keypress -> ustawiasz flagę. Potem sprawdzasz, czy ona istnieje, czy jednak nie i na tej podstawie sprawdzasz, czy klawisz jest trzymany.
Go to the top of the page
+Quote Post
remosek
post
Post #5





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 6.07.2010

Ostrzeżenie: (0%)
-----


flage?
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No tak:
- keypress -> flaga + wykonanie, jeśli była wcześniej false (zapobiegnie to wielokrotnemu wykonaniu)
- keyup -> czyści flagę
Go to the top of the page
+Quote Post
remosek
post
Post #7





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 6.07.2010

Ostrzeżenie: (0%)
-----


flaga to np go=true/false (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A przeczytałeś uważnie mojego posta?
Go to the top of the page
+Quote Post
remosek
post
Post #9





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 6.07.2010

Ostrzeżenie: (0%)
-----


dobra wiem juz myślałem że z tym wykonaniem o zmienna go=true/false ci chodziło sorrki ;/

nie może tak być bo mój skrypt chodzenia po mapie omija przeszkody wtedy tzn. że kolizje się nie wykonują poprawnie ja może wrzuce cały skrypt i zobaczysz o co chodzi.
  1. var x,y,pos,x2,y2,island,yt,xt;
  2. var go=true;
  3.  
  4. $(document).ready(function()
  5. {
  6.  
  7. $(window).bind("keyup", function(oEvent)
  8. {
  9. if(oEvent.keyCode == 87 || oEvent.keyCode == 38)
  10. {
  11. if(go==true)
  12. {
  13. send(0,75,0,1);
  14. go=false;
  15. }
  16. }
  17. if(oEvent.keyCode == 65 || oEvent.keyCode == 37)
  18. {
  19. if(go==true)
  20. {
  21. send(75,0,3,2);
  22. }
  23. }
  24. if(oEvent.keyCode == 83 || oEvent.keyCode == 40)
  25. {
  26. if(go==true)
  27. {
  28. send(0,-75,2,3);
  29. go=false;
  30. }
  31. }
  32. if(oEvent.keyCode == 68 || oEvent.keyCode == 39)
  33. {
  34. if(go==true)
  35. {
  36. send(-75,0,1,4);
  37. }
  38. }
  39.  
  40. });
  41.  
  42. setInterval(function()
  43. {
  44. $.ajax({
  45. type: "POST",
  46. url: "walk.php",
  47. data:"x="+(x2)+"&y="+(y2)+"&island="+(island)
  48. });
  49. },1000);
  50.  
  51. });
  52. function send(ox,oy,direction,pos)
  53. {
  54. switch(pos)
  55. {
  56. case 1:
  57. y2--;
  58. break;
  59. case 2:
  60. x2--;
  61. break;
  62. case 3:
  63. y2++;
  64. break;
  65. case 4:
  66. x2++;
  67. break;
  68. }
  69. $.ajax({
  70. type: "POST",
  71. url: "checkField.php",
  72. data:"nx="+(x2)+"&ny="+(y2)+"&nisland="+(island),
  73. success: function(msg){
  74. if(msg){
  75. go=false;
  76. setTimeout("map_pos(x+="+(ox/4)+",y+="+(oy/4)+");animation(0,"+direction+");",50);
  77. setTimeout("map_pos(x+="+(ox/4)+",y+="+(oy/4)+");animation(1,"+direction+");",100);
  78. setTimeout("map_pos(x+="+(ox/4)+",y+="+(oy/4)+");animation(2,"+direction+");",150);
  79. setTimeout("map_pos(x+="+(ox/4)+",y+="+(oy/4)+");animation(1,"+direction+");",200);
  80. setTimeout("go=true;",220);
  81. } else {
  82. alert("Error!");
  83. switch(pos)
  84. {
  85. case 1:
  86. y2++;
  87. break;
  88. case 2:
  89. x2++;
  90. break;
  91. case 3:
  92. y2--;
  93. break;
  94. case 4:
  95. x2--;
  96. break;
  97. }
  98. }
  99. }
  100. });
  101. }
  102. function animation(frame,direction)
  103. {
  104. $("#me").css("background-position",(-frame*64)+"px "+(-direction*79)+"px");
  105. }
  106. function map_pos(x,y)
  107. {
  108. $("#map").css("margin-left",(x)+"px");
  109. $("#map").css("margin-top",(y)+"px");
  110. }


Ten post edytował remosek 27.07.2012, 10:09:28
Go to the top of the page
+Quote Post
erix
post
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Grasz w piłkę też na kartce?

Wystaw to live.
Go to the top of the page
+Quote Post
remosek
post
Post #11





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 6.07.2010

Ostrzeżenie: (0%)
-----


w jQuery jest początkujący i nie wiem gdzie to .live() mam wstawić ?
Go to the top of the page
+Quote Post
erix
post
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Miałem na myśli skrypt na żywo... (IMG:style_emoticons/default/sleep.gif)
Go to the top of the page
+Quote Post
remosek
post
Post #13





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 6.07.2010

Ostrzeżenie: (0%)
-----


jak to wykonać ?

(IMG:style_emoticons/default/questionmark.gif)

dostane odpowiedź jak to zrobić na żywo czy skrypt mam odswierzac czy co ?

Ten post edytował remosek 27.07.2012, 11:13:57
Go to the top of the page
+Quote Post
toaspzoo
post
Post #14





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


Cytat(erix @ 27.07.2012, 11:12:18 ) *
Grasz w piłkę też na kartce?

Wystaw to live.

Cytat(remosek @ 28.07.2012, 12:40:34 ) *
jak to wykonać ?

(IMG:style_emoticons/default/questionmark.gif)

dostane odpowiedź jak to zrobić na żywo czy skrypt mam odswierzac czy co ?


...
Wrzuć live, czyli zaprezentuj działanie kodu na stronie !



Bo chyba nie piszesz kodu na poczekaniu, nie testując go, co nie ? (IMG:style_emoticons/default/blink.gif)

Ten post edytował toaspzoo 28.07.2012, 12:26:40
Go to the top of the page
+Quote Post
remosek
post
Post #15





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 6.07.2010

Ostrzeżenie: (0%)
-----


ok rozumiem teraz sekunda i wrzuce


http://mangawars.uphero.com/
email: test123@gmail.com
hasło: test123
Chodzisz strzałkami lub WASD

I co macie jakąś porade jak to zrobić ?

(IMG:style_emoticons/default/questionmark.gif) ?
Go to the top of the page
+Quote Post
ShadowD
post
Post #16





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

Ostrzeżenie: (0%)
-----


Ogarnij to jakoś bo zamiast poruszania włącza mi się w ff wyszukiwarka słów na stronie, poza tym nie wiem gdzie niby stoi postać bo oprócz trawy i wody nic nie ma (ok, czarna przestrzeń jeszcze - nie byt?).
Go to the top of the page
+Quote Post
remosek
post
Post #17





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 6.07.2010

Ostrzeżenie: (0%)
-----


to poprostu zrób nowe konto nie mam zrobionego jeszcze rpzesówania mapy a ktoś się zaloguje na testowe wyjdzie poza teren i bum nie ma postacji

postac jest widoczna juz


pomoże ktoś ?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 00:03