Delay, kako da usporim do...while |
Dobrodošli, goste ( Prijava | Registracija )
Delay, kako da usporim do...while |
Oct 10 2005, 08:33
Poruka
#1
|
|
|
A pomagaj neko ako ume
CODE on (rollOver) {
do { _root.skrol1.linija1._x +=1; // E SAD MI OVDE TREBA DELAY OD 10 do 30 msec } while (_root.skrol1.linija1._x<77); } |
|
|
|
|
![]() |
Odgovori (1 - 13)
Oct 10 2005, 08:44
Poruka
#2
|
|
|
napravish funkciju koju prozivash kroz setInterval.
|
|
|
|
|
Oct 10 2005, 09:25
Poruka
#3
|
|
|
^ daj primer molim te
|
|
|
|
|
Oct 10 2005, 21:02
Poruka
#4
|
|
|
Gujo, lepo je to zamisljeno al u Flashu ipak treba malo drugaciji pristup. Ovako ti je najjednostavnije:
CODE on(rollOver){ _root.skrol1.linija1.onEnterFrame = function(){ this._x +=1; if(this._x >=77){ delete this.onEnterFrame; } } } Naravno to sve pod pretpostavkom da je linija1 movieClip. Ako nije, pretvori je. Ovako ti je najlakse za pocetak. onEnterFrame znaci nesto tipa "ovo izvrsavaj XX puta u sekundi", gde je XX frejm rejt glavnog muvija. Moze se setovati nad bilo kojim movieClipom, ovde je bilo najzgodnije da se setuje na samu liniju. Ako hoces da interval kontrolises bas u milisekundama nezavisno od frejm rejta, onda se koristi setInterval, samo za ovo sto tebi treba (10-30 ms) setInterval nista ne vredi jer ne moze da bude manji od duzine trajanja jednog frejma u muviju (osim ako nisi jedan od onih manijaka koji rade sa 120 fps). setInterval je samo teorijski bolje resenje, u praksi je mnogo bolje da koristis onEnterFrame kad god mozes, a setInterval kad se mora. U ovom slucaju bi recimo mogao da podesavas "brzinu" linije tako sto menjas vrednost za koju se linija pomera u svakom koraku - tako bar posredno ne zavisis od frejm rejta glavnog muvija. Ako ti iz nekih razloga ipak treba da podesavas pauzu tacno od 10-30 ms, vici pa da uradimo preko setInterval (pre toga digni frejm rejt filma na 120 fps i zaboravi na bilo kakve zahtevnije tweenove velikih i kompleksnih objekata)... cak i tada nece ti to nikad biti tacna vrednost u ms... |
|
|
|
|
Oct 10 2005, 22:36
Poruka
#5
|
|
|
^
Uuuuuuuuuu evo upravo se drnadam sa getTimer() komandom i mislim da tu moze nesto da se odradi. a ovo sto si mi napisao je super fora ... idem da probam ... sve nogicama u dupence Eh sad .. ne radi, ali ja mnogo ocu, a nisam i objasnio sta ocu. Moram da roloverom na dugmence lagano mrdnem muviklip stotiak piksela u stranu. posto je inace taj muviklip vec isciman brdom if iskaza za neke druge potrebe, ucinio mi se ovaj pristup logican... Ali sad vidim da sam sa pogresnog casa pobego |
|
|
|
|
Oct 11 2005, 02:16
Poruka
#6
|
|
|
Err, zar nije ovako jednostavnije:
CODE on (rollOver) { if(_root.skrol1.linija1._x < 77) _root.skrol1.linija1._x += .01; // obrati paznju na += .01 } Meni je to krajnje logicno resenje... Ovako je movement 100 puta sporiji. Mada ni ovako nece raditi Moras da napravis controller za mouse hold event, tako sto ces isprogramirati button koji saradjuje sa glavnim mc-jem. Kad se mouse press desi setujes neku varijablu na true, a kad se desi mouse release -- false. Onda proveravas tu varijablu i ako je true, pomeras _root.skrol1.linija1 za neki korak sinhronizovan sa FPSom filma. Proveru stavis u animirani ciklus koji kruzi uz pomoc gotoAndPlay(...) na nivou glavnog mc-ja. glavni mc, recimo: CODE // prvi frejm gfHold = false; play(); // drugi frejm if(gfHold) { if(_root.skrol1.linija1._x < MAX_MOVE) _root.skrol1.linija1._x += FRAME_STEP; } else { stop(); } // treci frejm gotoAndPlay(_currentframe - 1); i (nevidljivi) button, tacnije hitarea: CODE on(press) { gfHold = true; gotoAndPlay(_totalframes - 1); } on(release, releaseOutside) { gfHold = false; } Pogledaj i ovde Ovo gore je iz glave, mozda nece raditi... |
|
|
|
|
Oct 12 2005, 01:25
Poruka
#7
|
|
|
Cemu to komplikovanje... zar ti nije proradilo onako...???
Btw. zaboravi na getTimer(), to je najgori moguci nacin da uradis to sto zelis. Nema jednostavnijeg i sigurnijeg nacina od onEnterFrame. |
|
|
|
|
Oct 12 2005, 01:36
Poruka
#8
|
|
|
CITAT (syndrome @ Oct 11 2005, 02:16) Err, zar nije ovako jednostavnije: CODE on (rollOver) { if(_root.skrol1.linija1._x < 77) _root.skrol1.linija1._x += .01; // obrati paznju na += .01 } Meni je to krajnje logicno resenje... Ovako je movement 100 puta sporiji. Mada ni ovako nece raditi Naravno da nece, Flash uvek uradi sve sto pise u jednom frejmu pa tek onda refreshuje screen. Mozes da stavis i _x+=.000001, dobices isti efekat. |
|
|
|
|
Oct 12 2005, 06:41
Poruka
#9
|
|
|
^^ Naravno, ali zar covek nije hteo da uspori stvar?
|
|
|
|
|
Oct 12 2005, 09:59
Poruka
#10
|
|
|
|
|
Oct 12 2005, 12:08
Poruka
#11
|
|
|
određeni član Grupa: Urednici Poruke: 2,630 Datum reg.: 6-February 05 Lokacija: orion Član broj: 227 |
fino ste ovo raspravili...
čisto zapisnika radi, full varijanta onoga što je istok predložio. neke sitne prepravke, čisto da ti se ne bi dešavao scroll kada je na max poziciji i da definišeš i rollout varijantu... CODE _root.button.onRollOver = function() {
this.onEnterFrame = function(){ if(objekat._x >= max){ delete this.onEnterFrame; } else { objekat._x +=1 } } this.onRollOut = function(){ delete this.onEnterFrame } } |
|
|
|
Oct 12 2005, 14:00
Poruka
#12
|
|
|
CITAT (istok @ Oct 12 2005, 10:59) Izvini ako sam upao na ovu temu, ali moj kod je potpuno player-safe... Nisam imao nameru da te miniram, a najmanje sto mozes da kazes je da kazes "ok, hvala" umesto sto govoris da komplikujem i da zakucavam plejer. Frakcionalni pokreti ne mogu, ponavljam, ne mogu da zakucaju plejer! Zaista mi nije jasno o cemu govoris. Uostalom, u zivotu i forumu covek stice vremenom neki kredibilitet, jel? Kad smo kod foruma, mislis li zaista da sam urednik zbog toga sto pravim komplikovan i nebulozan kod?A sto se komplikovanja tice, moj kod je za nijansu funkcionalniji i zato je malo duzi.. Ako nikom ne treba, to je ok -- ne morate ga upotrebiti, ali stojim iza toga da je fraza "taj kod zakucava plejer" losa za zapocinjanje konstruktivnog razgovora. Tehnicki: Moj kod nije postavljen na event-modelu, vec na timeline-u. To znaci da mu je neophodno da iterativno proverava stanje misa, tempom koji diktira FPS filma. Generalno, Flash ne moze reagovati brze od ovoga, zato sto je osvezavanje u oba slucaja prouzrokovano ulaskom u sledeci kadar. Event-based model je nesto bolji zato sto ne opterecuje film pokretanjem playheada koji dovodi do varijacija u grafici i/ili kodu... Bas zbog toga postoji ovaj safeswitch koji zaustavlja animaciju: CODE if(gfHold) {
if(_root.skrol1.linija1._x < MAX_MOVE) _root.skrol1.linija1._x += FRAME_STEP; } else { stop(); // <- ovde } |
|
|
|
|
Oct 13 2005, 10:10
Poruka
#13
|
|
|
Ej bre... lakše malo...
Mislio sam na ovo: CODE on (rollOver) { if(_root.skrol1.linija1._x < 77) _root.skrol1.linija1._x += .01; // obrati paznju na += .01 } Ja koliko vidim efekat ovoga biće taj da će svaki put kad on pređe mišem preko dugmeta linija samo da se pomeri za 0.01 piksel na desno i ništa više. Pa šta ako si urednik, svakom se desi da pogreši... evo i ja sam pogrešio pa me the ispravio... Btw ono za zakucavanje plejera je bila pošalica... na tvoju opasku da je hteo da uspori stvar... zašto na svim forumima moraju da se dešavaju ovakva prepucavanja...??? |
|
|
|
|
Oct 13 2005, 10:57
Poruka
#14
|
|
|
CITAT (istok @ Oct 13 2005, 11:10) Ej bre... lakše malo... Mislio sam na ovo: CODE on (rollOver) { if(_root.skrol1.linija1._x < 77) _root.skrol1.linija1._x += .01; // obrati paznju na += .01 } Ja koliko vidim efekat ovoga biće taj da će svaki put kad on pređe mišem preko dugmeta linija samo da se pomeri za 0.01 piksel na desno i ništa više. Pa šta ako si urednik, svakom se desi da pogreši... evo i ja sam pogrešio pa me the ispravio... Pa da, ali lepo sam napisao: CITAT (syndrome @ Oct 11 2005, 03:16) Zato i postoji onaj kod ispod CITAT (istok @ Oct 13 2005, 11:10) Btw ono za zakucavanje plejera je bila pošalica... na tvoju opasku da je hteo da uspori stvar... zašto na svim forumima moraju da se dešavaju ovakva prepucavanja...??? Ok. Sorry... Pre toga sam imao jos tri konflikta, pa sam postao preosetljiv...Nemam nista protiv ako si se salio. Stavise! Samo si ubo izgleda pogresan trenutak. I slobodno me ispravljajte. Btw, dodji na takmicenje (fsas.orionsyndrome.com) |
|
|
|
|
![]() ![]() |
| Lo-fi verzija | Trenutno vreme: Wednesday 19. June 2013 - 20:06 |