![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 138 Pomógł: 3 Dołączył: 4.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Mam pewien problem. Otóż mam kod w JS ściślej mówiąc fragment funkcji która ma sie wykonać gdy ktoś wciśnie przycisk na klawiaturze. Wszystko pieknie tylko że problem polega na tym - jeśli ktoś przytrzyma przycisk to funkcja zacznie wykonywać sie za szybko. Potrzebny mi jakiś licznik czasu przytrzymania czy coś w tym stylu... Może jakoś z set interval ? Jeśli niejasno sie wyjaśniłem zapisze to w pseudokodzie Kod if(przycisk_down == TRUE) { co 2 sekundy wykonaj funkcję } lub ewentualnie Kod funkcja pierwsza() { var czas=licz_czas_przytrzymania_przycisku; ilosc=czas%2; nastepna(ilosc); } funkcja nastepna(ilosc_1) { while(ilosc_1 > 0) { wykonuj cos_Tam; ilosc_1-1; } } ale najbardziej chodzilo by mi o to aby podczas przytrzymania przycisku co 2-3 sekundy wykonywala sie jakas czynnosc... myslalem jescze nad takim rozwiazaniem Kod var sec=getSeconds(); if (sec%3 == 0) { cos_tam_sobie_rob; } Jakies pomysly ? Z góry dziękuję za pomoc. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Na onKeypress uruchamiasz setInterval który odpala funkcję co x sek a na onKeyup ( jeżeli się nie mylę ) kasujesz zmienną do której przypisałeś interval.
-------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 138 Pomógł: 3 Dołączył: 4.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
hmmm poniewaz dopiero sie ucze JS to tak tylko względem konsultacji
nie wiem czy dobrze rozumuje ale... Kod var zmienna = setInterval(function (){ to co ma sie wykonac}, 2000}); //*********************************************************** if(document.onKeyUp == TRUE) { clearInterval(zmienna); } tak ? czy cos zepsulem ? w JS niestety muszę się jeszcze troche pobawic... -==EDIT==- Po zrobieniu tego w ten sposob jest problem, otoz - jesli przycisk jest nacisniety to odpala sie kilka interwałów... Czyli beznadzieja ogólnie rzecz biorąc bo funkcja wykonuje mi sie x razy + interwał na każdym co 2 sekundy. Nie mam pojecia jak sobie z tym poradzic Ten post edytował wizard144 27.01.2010, 21:04:43 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Pokaż cały kod jaki napisałeś łatwiej będzie Ci wskazać błąd.
-------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 138 Pomógł: 3 Dołączył: 4.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Kod var x=4; var y=1; var kierunek=39; document.onkeydown = checkKeycode; function checkKeycode(e){ var d = new Date(); var sec=d.getSeconds(); var msec=d.getMilliseconds(); if(sec%2==0 && ((msec > 0 && msec < 200) || (msec > 500 && msec < 600))|| (msec > 800 && msec < 999)) { var keycode; if (window.event) keycode = window.event.keyCode; else if (e) keycode = e.which; var x_pom=x; var y_pom=y; switch(keycode) { case 37: var x1=x-1; var y1=y; break; case 38: var y1=y-1; var x1=x; break; case 39: var x1=x+1; var y1=y; break; case 40: var y1=y+1; var x1=x; break; } if(x1==0) { x1=1; } if(x1==11) { x1=10; } if(y1==0) { y1=1; } if(y1==11) { y1=10; } ye=y1-1; var id=ye*10+x1; var id1=(y_pom-1)*10+x_pom; advAJAX.post({ url:\"xxx/projekt_edytor_map/idz.php\", parameters : { 'id' : id }, onSuccess : function(obj) { var krok=obj.responseText; if(krok == 0) { x=x_pom; y=y_pom; }else{ document.getElementById(id1).innerHTML=''; if(keycode == 37) { document.getElementById(id).innerHTML='<font color=\"white\"><</font>'; kierunek=37; x=x1; y=y1; } if(keycode == 38) { document.getElementById(id).innerHTML='<font color=\"white\">/\\\</font>'; kierunek=38; x=x1; y=y1; } if(keycode == 39) { document.getElementById(id).innerHTML='<font color=\"white\">></font>'; kierunek=39; x=x1; y=y1; } if(keycode == 40) { document.getElementById(id).innerHTML='<font color=\"white\">V</font>'; kierunek=40; x=x1; y=y1; } if(keycode == 32) { shoot(x,y,kierunek); document.getElementById(id).innerHTML='O'; } document.getElementById(id).style.border='none'; } }, onError : function(obj) {;} }); } } Obecny skrypt. a nizej to z interwałem Kod var x=4; var y=1; var kierunek=39; document.onkeydown = checkKeycode; function checkKeycode(e){ var d = new Date(); var sec=d.getSeconds(); var msec=d.getMilliseconds(); var idInterval = setInterval( function{ { var keycode; if (window.event) keycode = window.event.keyCode; else if (e) keycode = e.which; var x_pom=x; var y_pom=y; switch(keycode) { case 37: var x1=x-1; var y1=y; break; case 38: var y1=y-1; var x1=x; break; case 39: var x1=x+1; var y1=y; break; case 40: var y1=y+1; var x1=x; break; } if(x1==0) { x1=1; } if(x1==11) { x1=10; } if(y1==0) { y1=1; } if(y1==11) { y1=10; } ye=y1-1; var id=ye*10+x1; var id1=(y_pom-1)*10+x_pom; advAJAX.post({ url:\"xxx/projekt_edytor_map/idz.php\", parameters : { 'id' : id }, onSuccess : function(obj) { var krok=obj.responseText; if(krok == 0) { x=x_pom; y=y_pom; }else{ document.getElementById(id1).innerHTML=''; if(keycode == 37) { document.getElementById(id).innerHTML='<font color=\"white\"><</font>'; kierunek=37; x=x1; y=y1; } if(keycode == 38) { document.getElementById(id).innerHTML='<font color=\"white\">/\\\</font>'; kierunek=38; x=x1; y=y1; } if(keycode == 39) { document.getElementById(id).innerHTML='<font color=\"white\">></font>'; kierunek=39; x=x1; y=y1; } if(keycode == 40) { document.getElementById(id).innerHTML='<font color=\"white\">V</font>'; kierunek=40; x=x1; y=y1; } if(keycode == 32) { shoot(x,y,kierunek); document.getElementById(id).innerHTML='O'; } document.getElementById(id).style.border='none'; } }, onError : function(obj) {;} }); }, 1000); } } No i do tego jeszcze musze onKeyUp zrobic ale tez nie mam jakos pojecia jak. EDIT: Mam jeszcze pomysl, fakt ze mniej funkcjonalny, ale poki co powinien poradzic. Zrobic to za pomoca onKeypress. Czytalem ze to dziala przy krotkotrwalym wcisnieciu jakiegos klawisza. Niestety nie mogę odczytać kodu klawisza na onkeypress :| nie umiem chyba cos zle robie O.o EDIT 2: Ajax rządzi, do zamknięcia =] Ten post edytował wizard144 28.01.2010, 20:16:00 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 13:07 |