Autor | Zpráva | ||
---|---|---|---|
solta Profil |
#1 · Zasláno: 19. 9. 2012, 15:31:39 · Upravil/a: Moderátor (editace znemožněna) 20. 9. 2012, 10:55:49
ahoj
mam skrip který má provádět akci při stisknutí levého tlačítka a má se ukoncit pri jeho pustění vymyslel jsem to následovně ale nevím jak nastavit proměnou mouse_down na false při pustěni toho tlačitka $('#status').mousedown(function(e){ var mouse_down=true; if(e.which==1){ while(mouse_down){ . . . //mouseup mouse_down=false } } }); |
||
Darker Profil |
#2 · Zasláno: 19. 9. 2012, 16:20:10
solta:
„vymyslel jsem to následovně“ To nemůžeš dát do while - zasekne to prohlížeč. To co chceš se řeší tak, že si při zmáčknutí myši uložíš do paměti, že je zmáčknutá a pří puštění nebo odjetí myši si zas uložíš je je puštěná. Při zmáčknutí zároveň aktivuješ interval funkcí setInterval (nebo uděláš rekurzivní timeout) který se ukončí ve chvíli, kdy nějaká proměnná mouseIsDown bude false. |
||
solta Profil |
#3 · Zasláno: 19. 9. 2012, 18:36:40
Darker: dekuji potrebuji v te funkci ale neustale zjistovat pozici mysi jak to udelam udalost tam predam jen jednou jak tedy zjistim pozici kurzoru bez udalosti
|
||
Darker Profil |
#4 · Zasláno: 19. 9. 2012, 18:39:48
solta:
„jak tedy zjistim pozici kurzoru bez udalosti“ Nezjistíš. Mám pocit že chceš udělat nějakou funkci na tažení myší (mohls to říct hned). To se pak dělá tak, že máš místo intervalu který jsem zmiňoval event onmousemove a ten něco udělá, pokud je myš zmáčknutá. |
||
solta Profil |
#5 · Zasláno: 19. 9. 2012, 20:30:26
Darker:
vlastne se snazim vytvorit vyrtualni joystick ale to jsem si uvedomil az ted kliknes v danem prostoru a podle to jak s mysi hybes tak se hybe objekt |
||
solta Profil |
Darker:
hekuji za spolupraci vyresil jsem to takhle var shift_interval; var dx,dy; $('#rosette').mousedown(function(e){ if(e.which==1){ shift_interval=setInterval(shift,40); } }) $('#rosette').mouseup(function(){ clearInterval(shift_interval); }) $('#rosette').mouseleave(function(){ clearInterval(shift_interval); }) $('#rosette').mousemove(function(e){ //vypocet prirustku var x=$(this).width()/2; var y=$(this).height()/2; var offset = $(this).offset(); dx=((offset.left+x)-e.pageX)*2 dy=((offset.top+y)-e.pageY)*2 }) function shift(){ //posouvani } prosím moderatory aby změnili název diskuse třeba na jquery virtualní joystick ať to dává větší smysl |
||
Darker Profil |
#7 · Zasláno: 20. 9. 2012, 10:43:37
Proč neposouváš rovnou v rámci eventu mousemove? Nepotřeboval bys pak shift...
|
||
_es Profil |
#8 · Zasláno: 20. 9. 2012, 10:52:54
solta:
Tipujem, že sa aj môže nejako stať, že časovač setInterval nebude zrušený.
|
||
solta Profil |
#9 · Zasláno: 20. 9. 2012, 12:12:26 · Upravil/a: Moderátor (editace znemožněna) 20. 9. 2012, 13:56:39
no zkusi jsem s tim ruzne blbosti a mas pravdu mas pro me tedy nejakou radu
Moderátor Chamurappi: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou a interpunkcí.
|
||
Suta Profil |
solta:
Pouze připomínka k používání jQuery. Nauč se využívat uložení odkazu na jQuery objekt do lokální proměnné namísto jeho neustálého vytváření. Proměnné, které značí objekt vytvořený knihovou jQuery pojmenovávej (nepovinná, avšak doporučená konvence) se znakem $ na začátku. Místo: $('#rosette').mousedown(function(e){ ... $('#rosette').mouseup(function(e){ $('#rosette').mouseleave(function(e){ $('#rosette').mousemove(function(e){ Používej: $rosette = $('#rosette'); $rosette.mousedown(function(e){ ... $rosette.mouseup(function(e){ $rosette.mouseleave(function(e){ $rosette.mousemove(function(e){ nebo $('#rosette') .on("mousedown",function(e){ ... }) .on("mouseup",function(e){ ... }) .on("mouseleave",function(e){ ... }) .on("mousemove",function(e){ ... }); A místo: var x=$(this).width()/2; var y=$(this).height()/2; var offset = $(this).offset(); Používej: var $this = $(this), x=$this.width()/2, y=$this.height()/2, offset=$this.offset(); |
||
Chamurappi Profil |
Reaguji na Sutu:
„(nepovinná, avšak doporučená konvence) se znakem $ na začátku“ Docela praštěná konvence. K čemu to je? V JavaScriptu se proměnné podle datových typů nepojmenovávají, to je spíš zvyklost z Basicu. Podle ECMAScriptu 3 jsou proměnné začínající dolarem vyhrazené pro strojově generovaný kód. Na tvé ukázce je vidět, že dolar na začátku dokáže zmást automatické zvýrazňovače kódu, protože pak je JS skoro k nerozeznání od PHP. Moderátor Chamurappi: Další debata o konvenci s dolarem vytržena do Je dobrý nápad prefixovat proměnné s jQuery objekty dolarem?
|
||
solta Profil |
#12 · Zasláno: 20. 9. 2012, 15:15:09
Suta:
Děkuji za připomínku jistě ji zvážím a pokusím se ji implementovat ale ted bych potřeboval vyrešit tu ružici |
||
Suta Profil |
solta:
Nevím přesně, s čím aktuálně zápasíš, ale tuším, že potřebuješ něco takového: var dx, dy, startClientX, startClientY; $('#rosette').mousedown(function(e){ if(e.which==1){ // při kliknutí v požadovaném elementu uložíš aktuální pozici myši startClientX = e.clientX; startClientY = e.clientY; // na dokument navážeš událost mousemove $(document) .on("mousemove.rosette",function(e) { var actualClientX = e.clientX, actualClientY = e.clientY; // zde máš rozdíl mezi aktuální pozicí myší a pozicí myši v době mousedown var shiftX = startClientX - actualClientX, shiftY = startClientY - actualClientY; // zde můžeš provést operaci s daným rozdílem }) .on("mouseup.rosette",function(){ // při mouseup zrušíš událost mousemove (i mouseup) $(document) .off("mousemove.rosette") .off("mouseup.rosette"); }); } }) Poslední update kódu: 15:42 |
||
Chamurappi Profil |
|||
solta Profil |
#15 · Zasláno: 20. 9. 2012, 16:06:17
Chamurappi:
ja se pokouším vytvorit něco podobněho jako je na mapy.cz ta navigační ružice což je něco jiného než nabízíš nebo to špatně chápu |
||
Suta Profil |
#16 · Zasláno: 20. 9. 2012, 16:11:24
solta:
„ja se pokouším vytvorit něco podobněho jako je na mapy.cz ta navigační ružice“ To je pak těžko radit, když nevyjádříš přesně, co potřebuješ. |
||
solta Profil |
#17 · Zasláno: 20. 9. 2012, 16:14:36
Suta:
Virtuální joystick je myslím dost výstižné |
||
Suta Profil |
solta:
Pak jsem ti výše ve svém kódu nastínil výstižný postup, jehož modifikací si svoji růžici můžeš naprogramovat. Ostatně je to stejný postup, jaký ti Chamurappi popsal teoreticky. |
||
solta Profil |
#19 · Zasláno: 20. 9. 2012, 16:46:07
Suta:
promin tvůj příspěvek jsem tam úplně přehlédnul podivam se na to |
||
Časová prodleva: 12 let
|
0