Kezdőoldal » Számítástechnika » Programozás » Javascript-ben hogy tudom egy...

Javascript-ben hogy tudom egy végtelenített ciklus futása közben annak egyik változóját felhasználói beavatkozással módosítani?

Figyelt kérdés
próbáltam a setInterval-t, de nem igazán jöttem rá, hogy a clearInterval-t hol kell meghívnom, hogy működjön
2016. júl. 21. 14:43
 1/9 A kérdező kommentje:

bocsi, lehet, hogy nem világos amit akarok, mert eltelt fél óra a kérdés és a leírás megfogalmazása között, és nem figyeltem, hogy mit írtam előtte...


szóval:

a lényeg, hogy egy objektumot a kurzormozgató billentyűkkel szeretnék mozgatni egy területen belül, de úgy, hogy folyamatosan mozogjon az utoljára lenyomott billentyű irányába, de ehhez a gombnyomásokra először meg kéne valahogy állítani, hogy egyszerre csak egy függvény fusson

2016. júl. 21. 14:48
 2/9 anonim ***** válasza:
100%
Dehogy kell. Egy változóban eltárolod a mozgatás irányát (mondjuk 0-3 közötti számként), és mindig az adott számnak megfelelő irányba mozog. Gombnyomáskor egyszerűen felülírod a változó értékét.
2016. júl. 21. 16:33
Hasznos számodra ez a válasz?
 3/9 anonim ***** válasza:

Egyébként a clearInterval dolog úgy működik, hogy a setInterval-t értékül adod egy változónak, pl:

var timer = setInterval(doSomething, 100);


Ezután a clearInterval-t ezen a változón hívod meg:

clearInterval(timer);

2016. júl. 21. 16:40
Hasznos számodra ez a válasz?
 4/9 A kérdező kommentje:

köszi, ezeket én is tudtam, de mindkettővel gondjaim voltak...


előbbinél létrehoztam egy változót a függvényeken kívül, de valamiért nem működött a dolog

nem tudom, hogy tudok rendesen globális változót létrehozni, mert nekem ez korábban is csak úgy sikerült, hogy egy DOM elemhez rendeltem hozzá egy tetszőleges paramétert, és annak adtam egy értéket, de nem szeretnék ilyen fapados megoldást alkalmazni



utóbbinál néhány dolog kérdéses számomra:

- a setInterval függvény alatti sorok lefutnak a késleltetés ideje alatt, vagy csak a függvény megszakítása után?

- az időzítést hol tudom megszakítani? (pl. ahol létre lett hozva, vagy az időzített függvényen belül...)

2016. júl. 21. 17:16
 5/9 anonim ***** válasza:

A setinterval lényege pontosan az, hogy minden fut tovább normálisan, csak bizonyos időközönként lefut a benne megadott függvény. Megszakítani meg bárhol, ahol elérhető a setInterval változója. célszerű globálisan létrehozni.


Amúgy ha függvényen kívül hozol létre változót, az rendes globális változó lesz :D Valamit ott benéztél.

2016. júl. 21. 17:21
Hasznos számodra ez a válasz?
 6/9 A kérdező kommentje:

még mindig nem áll meg... hol rontottam el?

-------------------------------------------------------



function keydown(e){

if (!e) var e = window.event;

var num;

player = document.getElementById('player');

if (!player.style.left) player.style.left = '0px';

if (!player.style.top) player.style.top = '0px';


if (e.keyCode == 37 || e.keyCode == 38|| e.keyCode == 39 || e.keyCode == 40) clearInterval(stopmove);


function move(){

if (e.keyCode == 37){ //bal

num = parseInt(player.style.left) - 1;

if (num < 0) num = 0;

player.style.left = num + 'px';

return false;

}

else if (e.keyCode == 38){ //fel

num = parseInt(player.style.top) - 1;

if (num < 0) num = 0;

player.style.top = num + 'px';

return false;

}

else if (e.keyCode == 39){ //jobb

num = parseInt(player.style.left) + 1;

if (num > 750) num = 750;

player.style.left = num + 'px';

return false;

}

else if (e.keyCode == 40){ //le

num = parseInt(player.style.top) + 1;

if (num > 550) num = 550;

player.style.top = num + 'px';

return false;

}

}


setInterval(move, 100);

stopmove = setInterval(move, 100);

}


var stopmove;


document.onkeydown = keydown;

2016. júl. 21. 18:04
 7/9 A kérdező kommentje:
na, sikerült megoldani, w3schools.com-on kerestem egy példát, és ott láttam, hogy nem kell külön "setInterval(move, 100);" és "stopmove = setInterval(move, 100);", párhuzamosan futott a kettő, és csak az egyiket lehetett megállítani
2016. júl. 21. 23:27
 8/9 A kérdező kommentje:
Egyénként olyan szempontból értelmetlen, amit most csinálok, hogy a projekt előrehaladtával előbb-utóbb át kell váltanom ajax-ra, mert ez egy online játék akarna lenni.
2016. júl. 21. 23:56
 9/9 A kérdező kommentje:
ja és persze köszönöm a segítséget!:)
2016. júl. 21. 23:56

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!