Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Warunek gdy zmienna = 100 i jesli przycisk jest wcisniety.
wizard144
post
Post #1





Grupa: Zarejestrowani
Postów: 138
Pomógł: 3
Dołączył: 4.05.2009

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


Witam. Ostatnio siedzę nad czymś takim:



  1.  
  2.  
  3. if(zamiana=='50' && [tu drugi warunek)
  4. {
  5.  
  6. reszta kodu ...
  7.  
  8. }
  9.  
  10.  


Potrzebuję w JS napisać coś w stylu if(!isset(document.onkeyup)) czyli Jeśli żaden klawisz nie został puszczony lub jeśli wciąż jest wciśnięty. Jest mi to obojętne bo to jedno i to samo. Da sie to jakoś zrobić ? Napisze w pseudokodzie:

  1.  
  2. jesli zamiana == 50 i przycisk jest puszczony to
  3. {
  4.  
  5. wykonaj ten blok instrukcji.
  6.  
  7. }
  8.  
  9.  
  10.  


Proszę o pomoc. Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
batman
post
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Stwórz zmienną, np isKeyDown i ustaw ja na false. Następnie do zdarzenia keyDown (keyPress lub innego odpowiedzialnego za wciśniecie klawisza, teraz nie pamiętam jaki to jest event) przypisz funkcję, w której ustawisz zmienną isKeyDown na true. Potem w warunku sprawdzasz tylko zmienną isKeyDown.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
wizard144
post
Post #3





Grupa: Zarejestrowani
Postów: 138
Pomógł: 3
Dołączył: 4.05.2009

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


Chyba niezrozumiale to przedstawilem. Wygląda to w ten sposob:


  1. document.onkeydown = checkKeycode;
  2.  
  3. id=false;
  4.  
  5. function checkKeycode(e){
  6.  
  7. var keycode;
  8.  
  9.  
  10. if (window.event) keycode = event.keyCode;
  11. else if (e) keycode = e.which;
  12.  
  13.  
  14.  
  15. if(id == false)
  16. {
  17. switch(keycode)
  18. {
  19. case 37:wartosc = document.getElementById('divek').style.left;
  20. wartosc=parseInt(wartosc);
  21.  
  22. document.getElementById('divek').getElementsByTagName('img')[0].src='element_1.gif';
  23.  
  24. zmiana=0;
  25. if(id == false) {
  26. id = setInterval(
  27. function()
  28. {
  29.  
  30. document.getElementById('divek').style.left=wartosc-5;
  31. wartosc=wartosc-5;
  32. zmiana=zmiana+5;
  33.  
  34.  
  35. if(zmiana == 50)
  36. {
  37. clearInterval(id);
  38. id = false;
  39. document.getElementById('divek').getElementsByTagName('img')[0].src='element_0.gif';
  40. zmiana=0;
  41. }
  42.  
  43. }, 100)};break;
  44.  
  45. case 38:wartosc = document.getElementById('divek').style.top;
  46. wartosc=parseInt(wartosc);
  47.  
  48. document.getElementById('divek').getElementsByTagName('img')[0].src='element_2.gif';
  49. zmiana=0;
  50. if(id == false) {
  51. id = setInterval(
  52. function()
  53. {
  54.  
  55. document.getElementById('divek').style.top=wartosc-5;
  56. wartosc=wartosc-5;
  57. zmiana=zmiana+5;
  58.  
  59.  
  60. if(zmiana == 50)
  61. {
  62. clearInterval(id);
  63. id = false;
  64. document.getElementById('divek').getElementsByTagName('img')[0].src='element_0.gif';
  65. document.getElementById('divek').style.top=wartosc-2;
  66. wartosc=0;
  67. }
  68.  
  69. }, 100)};break;
  70. case 39:wartosc = document.getElementById('divek').style.left;
  71. wartosc=parseInt(wartosc);
  72.  
  73. document.getElementById('divek').getElementsByTagName('img')[0].src='element_3.gif';
  74. zmiana=0;
  75. if(id == false) {
  76. id = setInterval(
  77. function()
  78. {
  79.  
  80. document.getElementById('divek').style.left=wartosc+5;
  81. wartosc=wartosc+5;
  82. zmiana=zmiana+5;
  83.  
  84.  
  85. if(zmiana == 50)
  86. {
  87. clearInterval(id);
  88. document.getElementById('divek').getElementsByTagName('img')[0].src='element_0.gif';
  89. id = false;
  90. wartosc=0;
  91. }
  92.  
  93. }, 100)};break;
  94. case 40:wartosc = document.getElementById('divek').style.top;
  95. wartosc=parseInt(wartosc);
  96.  
  97. document.getElementById('divek').getElementsByTagName('img')[0].src='element_4.gif';
  98. zmiana=0;
  99.  
  100.  
  101.  
  102. if(id == false) {
  103. id = setInterval(
  104. function()
  105. {
  106.  
  107. document.getElementById('divek').style.top=wartosc+5;
  108. wartosc=wartosc+5;
  109. zmiana=zmiana+5;
  110.  
  111.  
  112. if(zmiana == 50)
  113. {
  114. document.getElementById('divek').style.top=wartosc+2;
  115. clearInterval(id);
  116. document.getElementById('divek').getElementsByTagName('img')[0].src='element_0.gif';
  117. id = false;
  118. wartosc=0;
  119. }
  120. }
  121. , 100);break;
  122. }
  123. }
  124.  
  125. }
  126.  
  127.  
  128. }


Mam sobie taki o to skrypcik wlasnorecznie napisany. Powoduje ze:


1. Jest div z zawartoscia pierwotną
2. Div zmienia zawartosc gdy ktos wcisnie ktoras ze strzalek.
3. Interval sie w sobie nie zagniezdza.(warunek if (id=false) )
4. Po przejechaniu 50 px zawartosc znowu sie zmienia na pierwotną.

Chciałbym zeby jesli przycisk jest wcisniety to zawartosc sie nie zmieniala. To znaczy

Przejedzie 50 - > przycisk wciśnięty -> przejedzie 50 -> Przejedzie 50 - > przycisk wciśnięty -> przycisk puszczony -> zawartosc sie zmienia na pierwotną

Mysle ze lepiej wytlumaczylem smile.gif
Go to the top of the page
+Quote Post
batman
post
Post #4





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Nie musisz ustawiać żadnych interwałów, by to działało. Najprostszy z możliwych przykładów:
  1. <script type="text/javascript">
  2. document.onkeydown = checkKeycode;
  3. function checkKeycode(e) {
  4. var keycode;
  5. if (window.event) keycode = event.keyCode;
  6. else if (e) keycode = e.which;
  7.  
  8. var el = document.getElementById("moveit");
  9. var l = parseInt(el.style.left);
  10. var t = parseInt(el.style.top);
  11. if(keycode == 37) {
  12. el.style.left = (l - 50);
  13. }
  14. else if(keycode == 38) {
  15. el.style.top = (t - 50);
  16. }
  17. else if(keycode == 39) {
  18. el.style.left = (l + 50);
  19. }
  20. else if(keycode == 40) {
  21. el.style.top = (t + 50);
  22. }
  23.  
  24.  
  25. }
  26.  
  27. <div id="moveit" style="position: absolute; top: 200px; left: 200px; width: 50px; height: 50px; border: 1px solid red;"></div>


Zapomniałem dodać, że na zdarzenie onKeyUp musisz ustawić left i top na domyślne wartości.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
wizard144
post
Post #5





Grupa: Zarejestrowani
Postów: 138
Pomógł: 3
Dołączył: 4.05.2009

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


Interwaly sa potrzebne zeby przejscie bylo plynne smile.gif
Go to the top of the page
+Quote Post
batman
post
Post #6





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




W takim razie polecam skorzystać z gotowego rozwiązania, np jQuery. Jest tam funkcja animate, która rozwiązuje problem "skakania".


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
wizard144
post
Post #7





Grupa: Zarejestrowani
Postów: 138
Pomógł: 3
Dołączył: 4.05.2009

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


Nie lubie korzystać z takich gotowych rozwiązań smile.gif





EDIT:

Póki co męczę się nad zrobieniem takiego przypisania:



var zmienna = funkcja;

Zamiast wartości funkcji zwraca mi cale cialo...

Ten post edytował wizard144 31.03.2010, 14:02:07
Go to the top of the page
+Quote Post
batman
post
Post #8





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Cytat
Nie lubie korzystać z takich gotowych rozwiązań
Dlaczego? Nie ma sensu wymyślać koła na nowo.

A odnośnie drugiego problemu:

var zmienna = funkcja();


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
wizard144
post
Post #9





Grupa: Zarejestrowani
Postów: 138
Pomógł: 3
Dołączył: 4.05.2009

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


Wiem wiem wiem smile.gif To ogarniam. Problem byl ze funkcja byla zle napisana.

A co do kola od nowa... nie o to chodzi. Chodzi o to żebym wiedział co i jak jest zrobione. Poza tym nie ogarniam troche jQuery. Tylko z advAjaxa korzystam
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 17:53