Dobrodošli, goste ( Prijava | Registracija )

Delay, kako da usporim do...while

V
guja
poruka Oct 10 2005, 08:33
Poruka #1




Grupa: Članovi
Poruke: 2,286
Datum reg.: 22-January 05
Lokacija: Beograd
Član broj: 116



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);
}
Go to the top of the page
 
+Quote Post
 
Start new topic

Odgovori (1 - 13)

gStyle
poruka Oct 10 2005, 08:44
Poruka #2


neUrednik™

Grupa: Urednici
Poruke: 4,718
Datum reg.: 16-January 05
Lokacija: Beograd
Član broj: 6



napravish funkciju koju prozivash kroz setInterval.
Go to the top of the page
 
+Quote Post
guja
poruka Oct 10 2005, 09:25
Poruka #3




Grupa: Članovi
Poruke: 2,286
Datum reg.: 22-January 05
Lokacija: Beograd
Član broj: 116



^ daj primer molim te
Go to the top of the page
 
+Quote Post
istok
poruka Oct 10 2005, 21:02
Poruka #4




Grupa: Članovi
Poruke: 557
Datum reg.: 28-August 05
Član broj: 1,539



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...
Go to the top of the page
 
+Quote Post
guja
poruka Oct 10 2005, 22:36
Poruka #5




Grupa: Članovi
Poruke: 2,286
Datum reg.: 22-January 05
Lokacija: Beograd
Član broj: 116



^
Uuuuuuuuuu smile.gif hvala

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 smile.gif
Go to the top of the page
 
+Quote Post
syndrome
poruka Oct 11 2005, 02:16
Poruka #6


zgužvam.. bacim

Grupa: Urednici
Poruke: 6,376
Datum reg.: 1-June 05
Lokacija: Beograd
Član broj: 808



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 rolleyes.gif
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...
Go to the top of the page
 
+Quote Post
istok
poruka Oct 12 2005, 01:25
Poruka #7




Grupa: Članovi
Poruke: 557
Datum reg.: 28-August 05
Član broj: 1,539



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.
Go to the top of the page
 
+Quote Post
istok
poruka Oct 12 2005, 01:36
Poruka #8




Grupa: Članovi
Poruke: 557
Datum reg.: 28-August 05
Član broj: 1,539



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 rolleyes.gif


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.
Go to the top of the page
 
+Quote Post
syndrome
poruka Oct 12 2005, 06:41
Poruka #9


zgužvam.. bacim

Grupa: Urednici
Poruke: 6,376
Datum reg.: 1-June 05
Lokacija: Beograd
Član broj: 808



^^ Naravno, ali zar covek nije hteo da uspori stvar?
Go to the top of the page
 
+Quote Post
istok
poruka Oct 12 2005, 09:59
Poruka #10




Grupa: Članovi
Poruke: 557
Datum reg.: 28-August 05
Član broj: 1,539



CITAT (syndrome @ Oct 12 2005, 06:41)
^^ Naravno, ali zar covek nije hteo da uspori stvar?
*


Postoje i mnogo okrutniji načini da se plejer zakuca smile.gif
Go to the top of the page
 
+Quote Post
the
poruka 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
   }
}
Go to the top of the page
 
+Quote Post
syndrome
poruka Oct 12 2005, 14:00
Poruka #12


zgužvam.. bacim

Grupa: Urednici
Poruke: 6,376
Datum reg.: 1-June 05
Lokacija: Beograd
Član broj: 808



CITAT (istok @ Oct 12 2005, 10:59)
Postoje i mnogo okrutniji načini da se plejer zakuca smile.gif
*
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
}
Go to the top of the page
 
+Quote Post
istok
poruka Oct 13 2005, 10:10
Poruka #13




Grupa: Članovi
Poruke: 557
Datum reg.: 28-August 05
Član broj: 1,539



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...???
Go to the top of the page
 
+Quote Post
syndrome
poruka Oct 13 2005, 10:57
Poruka #14


zgužvam.. bacim

Grupa: Urednici
Poruke: 6,376
Datum reg.: 1-June 05
Lokacija: Beograd
Član broj: 808



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)
Mada ni ovako nece raditi rolleyes.gif
*

Zato i postoji onaj kod ispod wink.gif

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! wink.gif
Samo si ubo izgleda pogresan trenutak.

I slobodno me ispravljajte.
Btw, dodji na takmicenje (fsas.orionsyndrome.com)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic

 



Lo-fi verzija Trenutno vreme: Wednesday 19. June 2013 - 20:06

Sve informacije (poruke, teme i sl.) predstavljaju stavove samo njihovih autora.
Objavljivanje informacija sa sajta u nekomercijalne svrhe moguće je samo uz navođenje URL adrese diskusije.
Za sve druge vidove distribucije potrebno je imati izričitu dozvolu administratora Dizajn Zone i/ili autora poruka.
Autorska prava za sadržaj poruke zadržava njihov autor, osim ako nije drugačije naznačeno.

powered by:Plus hosting