Kezdőoldal » Számítástechnika » Programozás » Javascript segítséget kérhetek?

Javascript segítséget kérhetek?

Figyelt kérdés

Nincs nagyon aktív magyar javascriptes fórum, ezért tőletek is megkérdezem, többen többet tudnak alapon.


Javascripttel/Jquery-vel (vagy ha tudtok jó libraryt, nekem az is jó) szeretnék mozgatni egy tárgyat a képernyőn a

szimpla WSAD billentyűkombinációkkal (ha lenyomom, akkor menjen, ha nem nyomom akkor ne menjen). Nyilván vannak a keydown keyup eventek, amikre szépen fel lehet iratkozni, de a probléma csak ezután jelentkezik.


Van az a windows-os jelenség, hogy ha leütünk egy billentyűt, akkor utána vár egy kicsit, és csak utána veszi be a leütést

sorozatosan egymás után. Ebből kifolyólag az elemem először egy kicsit megindul, vár, és utána kezd csak el az adott irányba

elmozdulni. Azt szeretném elintézni, hogy ha lenyomom a D-t akkor menjen jobbra, szépen rendesen ahogy kell neki.


amikkel eddig próbálkoztam:

-Jelenleg nem csinálok mást, csak a margin-left-jét növelem, ha keydown-t érzékel.


-A Position függvény nem jött be, mert azzal nem tudom elintézni, hogy simán menjen jobbra, az gyorsít, lassít,

szakaszosan veszi be az inputot stb (vagyis ugyanez a probléma ott is fennáll).

Ha persze be lehet ezt rendesen konfigurálni, hogy úgy működjön ahogy én akarom, az király lenne.


- Megpróbáltam, hogy setinterval-al csinálok egy végtelen ciklust, (setinterval nélkül si próbáltam magában az eseményben), ami ha érzékeli a rightDown globális változón, hogy true, akkor fut, ha nem true, akkor nem fut (a változó állítását nyilván a keydown, keyup eseményekkor állítom). A probléma a végtelen ciklusos megoldással az (azon felül hogy erőforrásigényes), hogy valamiért nem rajzolja

ki on the fly a képernyőre az eredményt, de ha beledebuggolok a végtelen ciklusba, akkor látom, hogy kiteszi (mintha nem lenne ideje

kirajzolni, mert időközben változik az értéke)--> (bár ezt cáfolja, hogy amikor a setintervalt 2 mp-re raktam, akkor se rajzolta).


Ha van valamilyen elfogadott kliensoldali módszer erre, légyszi segítsetek, mert tényleg sok időt belefeccöltem.


ui.: igyekszem kerülni a nagyon elborult javascript library-kat, mert csak a mozgatás miatt nem akarok behívni egy egész libraryt. (persze ha nincs más megoldás, akkor nyilván az is jó).


Köszi előre is.



2014. márc. 7. 20:19
 1/3 anonim ***** válasza:

A végtelen ciklussal az a baj, hogy a böngésző csak a ciklus lefutása után fogja a képernyőre kirajzolni a változást.


Tegyük fel, hogy x _sebességgel_ akarod mozgatni. Gondolom ez a cél.


Tehát mondjuk 3 pixel / sec. Sebességgel.

Ezt pedig 30 frame / sec frissítéssel akarod kirajzolni.

Ami azt jelenti, hogy 1/10 másodpercenként kell mozgatnod.


Ehhez használhatsz egy setInterval-t.


Azt így kell használni: setInterval(function(){alert("Hello")},100);


Ahol értelemszerűen a függvényt arra kell kicserélni, amit a te programod fog csinálni. A 100 pedig 1/10 másodperc, mert ezredmásodpercben kell megadni.

2014. márc. 8. 11:01
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:
Ja bocs, látom, hogy pont ez nem működik. Csak tl;dr
2014. márc. 8. 11:04
Hasznos számodra ez a válasz?
 3/3 anonim ***** válasza:

Interval helyett ezt használd:

[link]

2014. márc. 8. 11:08
Hasznos számodra ez a válasz?

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!