Forum FAQForum FAQSearchSearch MemberlistMemberlist Forum ignore listForum ignore list RegisterRegister ProfileProfile Log in to check your private messagesLog in to check your private messages Log inLog in
daj kreni vishe!

 
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    mi3dot.org Forum Index -> Flash
View previous topic :: View next topic  
Author Message
dblchckd



Joined: 02 Apr 2006
Posts: 106

PostPosted: 12.06.2006 19:57    Post subject: daj kreni vishe! Add user to your forum ignore list Reply with quote

Imam jedan problem u fleshu pa cu ga izvaditi iz konteksta da bi se lakse fokusirali:

Recimo da imam neki movie clip koji se zove muvi_mc u libraryju koji zelim atachnut na scenu i onda mu reci da krene (play()) jerbo muvi klip u prvom frejmu svog tajmlajna ima stop()

Kod na glavnom tajmlajnu koji atachira muvi_mc je slijedeci:
Code:
this.attachMovie("muvi_mc", "muvi_mc", 1);
muvi_mc.play();

Medjutim to ne radi, muvi_mc stoji na prvom frejmu i ne mrda?!
Trebalo bi biti vrhunski banalno i nije mi jasno u cemu je problem.
Da apsurd bude veci sve ostale naredbe koje uputim muvi_mc-u rade?! Npr. umjesto play() mu kazem stop() (u tom slucaju na prvom frejm muvi_mc-a izbacim stop) ili mu promjenim _x property:
Code:
muvi_mc.stop();
muvi_mc._x += 100;
, ili nesto trece i sve radi osim methode play?

Pomislio sam da se mozda attachMovie izvrsava tek nakon sto je ostali kod izvrsen pa da u trenutku kada naredjujem play muvi_mc jos nije prisutan. Ali sa traceom sam se uvjerio da referenca na muvi_mc sljaka i nije u tom problem, uostalom da je u tome problem onda niti ostale naredbe ne bi radile:
Code:
this.attachMovie("muvi_mc", "muvi_mc", 1);
trace(muvi_mc);
muvi_mc.play();

output window ga kuzi i izbacuje: _level0.muvi_mc


Ali kad play() ne zovem u istom bloku u kojem sam zvao attachMovie nego naknadno, onda sve radi kako spada, npr. kad promjenim kod kao dolje:
Code:
this.attachMovie("muvi_mc", "muvi_mc", 1);
onMouseDown = function(){
   muvi_mc.play();
}

na klik misem muvi_mc krene


Iz svog dosadasnjeg iskustva znam da se flash nikad ne ponasa nelogicno nego je uzrok problemu uvijek bilo to sto nesto nisam znao ili sam krivo napisao pa se tako i sad nadam da postoji logicno objasnjenje za ovu "nelogicnost"...

any ideas?
Back to top
View user's profile Send private message
g-style



Joined: 08 Oct 2003
Posts: 89
Location: bG

PostPosted: 14.06.2006 14:39    Post subject: Add user to your forum ignore list Reply with quote

meni nije jasno zashto attachujesh movie clip koji je vec na sceni?!

_________________
GSTL | WTF7 | DNK | Svakog dana i u svakom pogledu sve sam veći psihopata!
Back to top
View user's profile Send private message Send e-mail Visit poster's website
dblchckd



Joined: 02 Apr 2006
Posts: 106

PostPosted: 15.06.2006 02:52    Post subject: Add user to your forum ignore list Reply with quote

g-style wrote:
meni nije jasno zashto attachujesh movie clip koji je vec na sceni?!


Ne attachujem movie koji je vec na sceni??
Ne znam po cemu si to zakljucio jer sam jasno napisao da se kod koji attachira muvi_mc nalazi na glavnom tajmlajnu (aka main timeline iliti _root)... a muvi_mc nije na sceni nego u knjiznici, cita Laughing
Back to top
View user's profile Send private message
g-style



Joined: 08 Oct 2003
Posts: 89
Location: bG

PostPosted: 15.06.2006 03:01    Post subject: Add user to your forum ignore list Reply with quote

Code:
this.attachMovie("muvi_mc", "muvi_mc", 1);
muvi_mc._x = 50;
muvi_mc._y = 50;
onMouseDown = function () {
   muvi_mc.play();
};

istestirao i radi play();

_________________
GSTL | WTF7 | DNK | Svakog dana i u svakom pogledu sve sam veći psihopata!
Back to top
View user's profile Send private message Send e-mail Visit poster's website
dblchckd



Joined: 02 Apr 2006
Posts: 106

PostPosted: 15.06.2006 03:33    Post subject: Add user to your forum ignore list Reply with quote

g-style wrote:
Code:
this.attachMovie("muvi_mc", "muvi_mc", 1);
muvi_mc._x = 50;
muvi_mc._y = 50;
onMouseDown = function () {
   muvi_mc.play();
};

istestirao i radi play();


Pa naravno da radi kad je unutar onMouseDown, to sam i napisao gore, nisi pazljivo procitao. Ali probaj mu reci play() u istom bloku u kojem attachirash pa ces vidjeti da ne radi (a kad mu kazes npr. stop() to radi?!), znaci:
Code:
this.attachMovie("muvi_mc", "muvi_mc", 1);
muvi_mc.play();

//ne radi


Code:
this.attachMovie("muvi_mc", "muvi_mc", 1);
muvi_mc.stop();

/*a ovo radi?! (naravno u tom slucaju muvi_mc nema stop() na frvom frejmu, pa ga zelim zaustaviti)*/
Back to top
View user's profile Send private message
Ivan Podrug - e1



Joined: 15 Apr 2005
Posts: 316
Location: Solin

PostPosted: 15.06.2006 08:55    Post subject: Add user to your forum ignore list Reply with quote

radi se o vremenu potrebnom za inicijaciju attach_anog movieclipa.
Stop i _x/_y rade jer se iniciraju prvi odnosno samo kontejner mc_a.

probaj dodat u prvi frame toga "muvi_mc" this.Ucitan = true;
nakon attachMovie dodaj trace (muvi_mc.Ucitan);

dobit ćeš undefined; Ako taj trace prebaciš u neki od kasnijih frameova dobit ćeš true.

neka od rješenja:

stavi play() u kasnijim frmeovima (daj dovoljno vremena za inicijaciju)
izradi posebnu funkciju attachiranja koja radi na bazi onEnterFrame koji čekira tu Ucitan varijablu i okida je po vrijednosti true.

primjer:
attachMovie("mc","mc",1);

mc.onEnterFrame = function () {
if (this.Ucitan) {
this.play();
delete this.onEnterFrame; // nemamo više potrebe za trošenjem resourca
}
}
Back to top
View user's profile Send private message
dblchckd



Joined: 02 Apr 2006
Posts: 106

PostPosted: 16.06.2006 02:47    Post subject: Add user to your forum ignore list Reply with quote

@Podrug hvala na odgovoru

Ali u medjuvremenu sam skuzio u cemu je bio problem:

Ivan Podrug - e1 wrote:

radi se o vremenu potrebnom za inicijaciju attach_anog movieclipa.

stavi play() u kasnijim frmeovima (daj dovoljno vremena za inicijaciju)

Stop i _x/_y rade jer se iniciraju prvi odnosno samo kontejner mc_a.


Ovo s inicijacijom je mistifikacija. Ne radi se ni o kakvom vremenu za inicijaciju vec o tome da se kod na prvom frejmu attachiranog moviea izvrsava tek nakon sto se izvrsi cijeli kod na frvom frejmu moviea koji attachira.
Nakon prve linije koda u kojoj se attachira muvi, muvi je attachiran i dostupni su njegovi propertyzi i metode... to objasnjava zasto mu mogu namjestiti _x property ili mu reci stop(). I play() takodjer "radi", ali ga ponisti stop() na prvom frejmu attachiranog muvija (jer se taj kod izvrsio poslije).


Ivan Podrug - e1 wrote:

primjer:
attachMovie("mc","mc",1);

mc.onEnterFrame = function () {
if (this.Ucitan) {
this.play();
delete this.onEnterFrame; // nemamo više potrebe za trošenjem resourca
}

Stoga ovaj gore kod nije primjeren.


Uglavnom, rijesio sam to ovako:

Na frejm moviea koji attachira sam stavio ovo:
Code:
this.attachMovie("mc", "mc", 1, { idesh: true})


A na prvi frejm attachiranog ovo:
Code:
if (idesh){
   play()
}else{
   stop();
}
Back to top
View user's profile Send private message
Ivan Podrug - e1



Joined: 15 Apr 2005
Posts: 316
Location: Solin

PostPosted: 16.06.2006 09:34    Post subject: Add user to your forum ignore list Reply with quote

nema na čemu.

mislim da nisi u pravu pri svom objašnjenju rješenja problema. Ali ako te zadovoljava i radi - sve OK.
Back to top
View user's profile Send private message
dblchckd



Joined: 02 Apr 2006
Posts: 106

PostPosted: 16.06.2006 11:59    Post subject: Add user to your forum ignore list Reply with quote

Ivan Podrug - e1 wrote:
nema na čemu.

mislim da nisi u pravu pri svom objašnjenju rješenja problema. Ali ako te zadovoljava i radi - sve OK.


Mozes li obrazloziti zasto mislis da nisam u pravu. Ja mislim da ti nisi u pravu i mogu to dokazati. Jednostavnim provjerama sam ustanovio (traceom) da se kod na mc-u ne izvrsava nakon linije koda u kojoj je attachiran, nego tek nakon sto se cijeli kod u frejmu izvrsi. Prilicno je banalno zapravo, dokazivo, i u potpunosti objasnjava "neobicno" ponasanje. Tako da mi nije jasno zasto kazes da nisam u pravu dok ti istovremenu objasnjavas problem misticnim pojmovima poput inicijacije i toga da je kontejner(?!) za mc prisutan a ostatak muvija nije. Muvi je odmah nakon attachiranja dostupan u cjelosti, sve njegove metode i propertiji, pa tako i play().
A onEnterFrame event je suvisan. Varijabla Ucitan koju si kreirao u prvom frejmu mc-a ce mc-u i biti dostupna odmah u prvom frejmu (nema nikakvog vremena za inicijaciju) i nema potrebe za aktiviranjem onEnterFramea (jednostavno provjeri: stavi trace u onEnterFrame i vidjeces da ce onEnterFrame uvijek otkucati samo jednom).
Najednostavnije je napravti ovo sto sam vec napisao: staviti conditional if u mc, i pri attachanju mu dodati argument (npr idesh:true) ako zelis da ide, odnosno ne dodati nista ako zelim da stoji kad se attachira. Jednostavno i ne "trosi resurse" uopce Cool
Back to top
View user's profile Send private message
Ivan Podrug - e1



Joined: 15 Apr 2005
Posts: 316
Location: Solin

PostPosted: 16.06.2006 12:27    Post subject: Add user to your forum ignore list Reply with quote

aj sad da ne "kenjam" i lijepim google linkove evo objašnjenje.

"mistična" inicijacija je vrijeme koje je potrebno da se movieclip inicira (vidi funkciju onInit). Niti je mističan niti sam ja izmislio taj termin. Pogotovo je izraženo kod library items koje su definirane da se učitaju u prvom frameu filma a veće su i/ili procesorski zahtjevnije (komponente, obrade XMLa/Arraya ili sl. operacija kojima treba više vremena)

flash je multithreaded aplikacija iako (ne u punom smislu riječi (ali dovoljno) što znači da ukoliko u prvom frameu roota pozovesh attach movie a nakon toga pokreneš petlju koja vrti 10^8 nečega (velika pauza) bez obzira na pauzu, attachani film će početi svoju radnju.

Kontejner (container) je zapravo emptyMoveiClip koji se na sceni postavlja jako brzo (inicira) dok ostatak punjenja (loadanje ili attachiranje) traje neki period (pričamo o milisekundama). Kako je objektno gledano to movieclip, odmah po postavljanju na scenu (onInit) on zaprima sve klasične properties MovieClip klase (_y, _y,...). Ako mu probaš taj tren dodijeliti varijablu koaj je definirana unutar učitavanog clipa ili obično play(), neće raditi jer ostatak nije iniciran (izgrađen/postavljen na scenu ili kako ti već draže).
Ovo je pogotovo primjetno kod rada na internetu (za razliku od lokalnog diska) kada razmak od uobičajenih 20msec raste na znatno veće vrijednosti.

Varijabla u prvom frameu ucitanog filma ce biti dostupna TEK po incijaciji samog movieclipa. Pogledaj u helpu razliku između OnComplete, onLoad i onInit. Iako su za učitavanje, ponašanje movieclipa je identično attachiranju.

OnEnterFrame radi samo jednom jer je film koji se učitava u lokalu. Probaj ga uploadat na web pa potegnit odatle. Povećaj mu težinu (stavi unutra sliku od 50-100Kb). Okinut će ti najmanje 3-4 puta prije nego se izbriše.

Tvoj način rada ima manu jer je potrebno editirati svaki movieClip koji se attacha (zamislimo da ih je 50), pri tom paziti kako se zove varijabla koju dajemo u rootu, a ako radimo drugu aplikaciju nije reusable.
Moj način je korak "prema" i isto traži definiranje varijable. Naveo sam ga samo kao primjer da ti objasnim zašto se to dešava i kako je najfunkcionalnije riješit. Kontrola je apsolutna jer onEnterframe radi dok ne dobije što treba.

Siguran sam da je tebi tvoj način najjednostavniji i zato sam ti i rekao: ako ti odgovara - Super.
Da nije točno sam rekao jer ćeš uskoro naići na druge probleme (dodjeljivanje varijabli i sl.) kada ti to neće raditi kako treba.

Oprosti ako sam te uvrijedio, nije mi bila namjera.
O&O
Back to top
View user's profile Send private message
dblchckd



Joined: 02 Apr 2006
Posts: 106

PostPosted: 16.06.2006 23:40    Post subject: Add user to your forum ignore list Reply with quote

@podrug
hvala na odgovoru, odgovorim ti danas cim stignem
Back to top
View user's profile Send private message
dblchckd



Joined: 02 Apr 2006
Posts: 106

PostPosted: 17.06.2006 00:36    Post subject: Add user to your forum ignore list Reply with quote

@Podrug
Ma nisam se uvrijedio nedajboze, sori ak je tako zazvucalo, samo sam smatrao da nisi u pravu i pokusao to obrazloziti... a super mi je da se raspravljamo, uvijek se nesto nauci iz toga Smile

Jos uvijek nisam uvjeren u tvoje argumente

Ivan Podrug - e1 wrote:
Tvoj način rada ima manu jer je potrebno editirati svaki movieClip koji se attacha (zamislimo da ih je 50), pri tom paziti kako se zove varijabla koju dajemo u rootu, a ako radimo drugu aplikaciju nije reusable.

moj kod nije nista manje reusable od tvog. Obojica moramo dodati kod u movie klip koji se attacha (ti definiras varijablu Ucitan) i onda je tak svejedno je li to neki conditional ili definicija varijable... a meni se cini da je jednostavnije staviti if statement i onda prilikom attachanja samo dodati initobjekt u attachMovie nego koristiti onEnterFrame koji je bespotreban (zasto je bespotreban sam pojasnio dolje, pod najvaznije)


Ivan Podrug - e1 wrote:
Kako je objektno gledano to movieclip, odmah po postavljanju na scenu (onInit) on zaprima sve klasične properties MovieClip klase (_y, _y,...). Ako mu probaš taj tren dodijeliti varijablu koaj je definirana unutar učitavanog clipa ili obično play(), neće raditi jer ostatak nije iniciran (izgrađen/postavljen na scenu ili kako ti već draže).

Naravno da on odmah dobiva propertiese MovieClip klase, slazem se, ali onda dobiva i sve metode MovieClip klase, a to znaci i play(). I nije razlog zasto play() ne radi zato sto movie nije iniciran, nego je jednostavno ponisten od stop() koda u prvom frejmu mc-u koji je izvrsen kasnije.

Ivan Podrug - e1 wrote:
flash je multithreaded aplikacija iako (ne u punom smislu riječi (ali dovoljno) što znači da ukoliko u prvom frameu roota pozovesh attach movie a nakon toga pokreneš petlju koja vrti 10^8 nečega (velika pauza) bez obzira na pauzu, attachani film će početi svoju radnju.

ovdje si u pravu, skuzio sam da se kod mc-a ne izvrsava nuzno nakon cijelog koda na _rootu. Iako to nista ne mjenja na stvari oko toga da onEnterFrame nije potreban i da je moje rijesenje cisce.... vidi dalje...

Ivan Podrug - e1 wrote:
"mistična" inicijacija je vrijeme koje je potrebno da se movieclip inicira (vidi funkciju onInit). Niti je mističan niti sam ja izmislio taj termin. Pogotovo je izraženo kod library items koje su definirane da se učitaju u prvom frameu filma a veće su i/ili procesorski zahtjevnije (komponente, obrade XMLa/Arraya ili sl. operacija kojima treba više vremena)

Ivan Podrug - e1 wrote:
Kontejner (container) je zapravo emptyMoveiClip koji se na sceni postavlja jako brzo (inicira) dok ostatak punjenja (loadanje ili attachiranje) traje neki period (pričamo o milisekundama)

Ivan Podrug - e1 wrote:
OnEnterFrame radi samo jednom jer je film koji se učitava u lokalu. Probaj ga uploadat na web pa potegnit odatle. Povećaj mu težinu (stavi unutra sliku od 50-100Kb). Okinut će ti najmanje 3-4 puta prije nego se izbriše.

Ivan Podrug - e1 wrote:
Varijabla u prvom frameu ucitanog filma ce biti dostupna TEK po incijaciji samog movieclipa. Pogledaj u helpu razliku između OnComplete, onLoad i onInit. Iako su za učitavanje, ponašanje movieclipa je identično attachiranju.

Jos uvijek mi je misticno... funkcija onInit nije embedana u actionscript niti kao metoda niti kao globalna funkcija niti kao event. onInit event ne postoji osim ako ga sam ne napravis.
A najvaznije je:
da, filmichi koji se exportaju u prvi frejm trebaju vrijeme da se ucitaju, ali za to vrijeme i frejm na _rootu ceka i ne izvrsava kod... Znaci dok se ne ucita cijeli sadrzaj _roota i svi muviji iz libraryja koji imaju namjesten export u prvi frejm ili komponente ili whatever, nista se ne pokrece, cak se niti sadrzaj _roota ne prikazuje, ne izvrsava se njegov kod, niti kod attachiranog moviea, tako da ne treba ni reci da nema sanse da mc.oEnterFrame otkuca vise puta a da se mc nije niti ucitao:wink:

(A cak i kad bi se kod pokrenuo prije nego se mc "inicira", sto je naravno nemoguce i slucaj je samo hipotetski, cak i tad bi onEnterFrame otkucao samo jednom jer si varijablu Ucitan definirao na prvom frejmu mc-a i njemu bi bila dostupna vec na prvi otkucaj onEnterFramea. Pa nemoguce je da otkuca 3-4 puta odnosno da udje u 3-4 svoja frejma a da pritom nema raspolozive vrijednosti varijabli iz svog prvog frejma)

Ja se programiranjem bavim iz hobija, imam hrpu rupa i ne zelim da mislis da ti pametujem jer vidim da nisi neki bedak Smile ali sad sam uvjeren da sam u pravu... drago mi je da imas drugacije misljenje i da se mozemo raspravljati Cool
Back to top
View user's profile Send private message
Ivan Podrug - e1



Joined: 15 Apr 2005
Posts: 316
Location: Solin

PostPosted: 17.06.2006 11:13    Post subject: Add user to your forum ignore list Reply with quote

kul. gibamo se prema naprijed. Very Happy
Ja mogu reć da se bavim flashom malo ozbiljnije od hobija ali nažalost ne toliko koliko bih htio. No, radim na tome. Smile

Prvo, moja velika isprika. Ja to mahinalno napišem a da ne razmišljam. OnInit kod mene "podrazumijeva" MovieClipLoader.onLoadInit(). Isto se odnosi i na onLoadComplete i onLoadStart. Oprosti. Smile

ooEnterFrame vs. if : Kako si i sam rekao, tebi je IF lakši i logičniji, meni onEF. Pokazao mi se pouzdaniji od ičega drugog. Sreća pa se u programiranju problem može riješiti (najčešće) na više od jednog načina.

Svojevremeno sam radio jednu opsežniju aplikaciju koja je attach_irala Symbol krcat komponentama i kodom i attachMovie prosljeđivanje InitObjekta nikako nije radilo kako treba.
Došao sam do zaključka da se radilo o vremenskim raskoracima u kodu u _root_u i na samom attachiranom mc_u. Slične probleme imao sam pri klasičnom loadMovie objekata na internetu (spora veza).
Najbanalnijom metodom test-error-test-radi sam došao do ovoga sa onEF.

this.attachMovie("mc", "mc", 1, { idesh: true}) NIJE 100% siguran način da ćeš proslijedit varijablu. To ti garantiram iz iskustva. Očito se radi o kašnjenju u samom enginu flasha kojeg sam spominjao.

Analiziram teoretski:
imaš _root koji traži Symbole na prvom frameu prije starta.
Symbol koji nama treba ima također neke stvari koje traži na prvom frameu _localroot_a.
U trenu kada je _root potegao sve u prvi frame kreće izvršavanje aplikacije bez obzira jesu li Symboli potegli i svoje.
Mi proslijeđujemo varijablu Symbolu ali on nije spreman jer možda nije završio svoj proces punjenja ili "iniciranja" ili koji godtobiopravitermin.

Zato mu kačim onEnterFrame koji ga vreba sve dok ne bude spreman.
Back to top
View user's profile Send private message
dblchckd



Joined: 02 Apr 2006
Posts: 106

PostPosted: 17.06.2006 14:37    Post subject: Add user to your forum ignore list Reply with quote

Ne slazemo se jos uvijek (oko onEnterFramea) ali mi je drago da smo raspravljali jer sam pojasnio sam sebi neke stvari pokusavajuci ti odgovoriti Cheers!


Code:
Prvo, moja velika isprika. Ja to mahinalno napišem a da ne razmišljam. OnInit kod mene "podrazumijeva" MovieClipLoader.onLoadInit(). Isto se odnosi i na onLoadComplete i onLoadStart. Oprosti. Smile

Code:
Svojevremeno sam radio jednu opsežniju aplikaciju koja je attach_irala Symbol krcat komponentama i kodom i attachMovie prosljeđivanje InitObjekta nikako nije radilo kako treba.
Došao sam do zaključka da se radilo o vremenskim raskoracima u kodu u _root_u i na samom attachiranom mc_u. Slične probleme imao sam pri klasičnom loadMovie objekata na internetu (spora veza).


Ja nisam imao slicno iskustvo, i pomisljam da nisi pomijesao iskustva s loadanjem i attachiranjem mozda.
Pokusat cu povuci paralelu s eventima MovieClipLoader klase (koja upravlja loadanjem) s attachiranjem. Kad attachiranja _root "stoji" dok se cijeli mc ne loada na disk (onLoadComplete). Znaci attachMovie() se nece niti desiti dok mc nije loadan, to je bitna razlika u odnosu na loadMovie(). A kad se mc loada _root se inicira, tj izvrsava kod, i ne ceka da se mc inicira (inicijacijom se naziva kad se izvrsi prvi frejm, to nisam znao, sori na optuzbama za mistifikaciju Angel ), Zato nam u _rootu nisu dostupne varijable definirane na prvom frejmu mc-a ali su nam dostupne svi njegovi propertizi i metode MovieClip klase. A kako se mc-ov prvi frejm izvrsava kasnije od _rootovog, u mom slucaju stop() jednostavno "pregazi" play() na _rootu (play() je znaci savrseno funkcionalan bez obzira sto mc nije iniciran).

Bez obzira sto se sve desava u browseru i bez obzira koliko spor download bio initobject mora raditi jer, kao sto sam gore napisao, attachMovie kod se izvrsava tek kad je movie (ako je namjesten export u prvi frejm) ucitan na disk. Znaci, kad bi usporedio s loadanjem, kao da se attachMovie i dodavanje initObjecta desava u onLoadComplete funkciji.

A sto se onEnterFramea tiche to ne mogu prihvatiti ni u kom slucaju jer si onEF definirao na mc-u a ne na _rootu, tako da taj event ulaska u frejm nikako ne moze okinuti vise puta jer je var Ucitan na prvom frejmu. A mc ne moze otici u drugi frejm bez da odradi kod na prvom frejmu bez obzira koliko mu trebalo da se inicira.
Back to top
View user's profile Send private message
Sulien



Joined: 04 Jan 2004
Posts: 2905
Location: Zagreb

PostPosted: 17.06.2006 16:28    Post subject: Add user to your forum ignore list Reply with quote

Fina rasprava. Dugo ovako u dubinu nismo raspravljali Flash Smile

A pazi sad ovo - kad loadaš mc sa library-a na scenu on je automatski u 'play' modu (ako ima više od jednog frejma)

Zašto zoveš play() na nečemu što se vrti po defaultu?
Back to top
View user's profile Send private message Send e-mail Visit poster's website
dblchckd



Joined: 02 Apr 2006
Posts: 106

PostPosted: 17.06.2006 17:15    Post subject: Add user to your forum ignore list Reply with quote

Sulien wrote:
Fina rasprava. Dugo ovako u dubinu nismo raspravljali Flash Smile

A pazi sad ovo - kad loadaš mc sa library-a na scenu on je automatski u 'play' modu (ako ima više od jednog frejma)

Zašto zoveš play() na nečemu što se vrti po defaultu?


Promaklo ti je... napisao sam da mc u prvom frejmu ima stop()...
Htio sam da mi mc-ovi po difoltu stoje kad ih attachnem osim ako im ja prilikom attachiranja ne kazem drukcije...
Ali sad sam odustao od dosadasnjih nacina da to postignem... Podrug ima pravo, oba nasa rjesenja su nezgodna jer zahtjevaju unosenje koda u svaki mc ... upravo smisljam jednostavan nacin kako da to izbjegnem...
Back to top
View user's profile Send private message
Sulien



Joined: 04 Jan 2004
Posts: 2905
Location: Zagreb

PostPosted: 17.06.2006 18:20    Post subject: Add user to your forum ignore list Reply with quote

Code:
// "muving" je animirani mc kojeg hocemo attachati bez da krene

// malo gazimo default metode
MovieClip.prototype.attachAndPlay = MovieClip.prototype.attachMovie;
MovieClip.prototype.attachMovie = function(id, name, depth, initObject){
   if(!initObject) initObject = null;
   var mc = this.attachAndPlay(id, name, depth, initObject);
   mc.stop();
   return mc;
}

// ovaj clip ce stati na include:
attachMovie("muving", "muvi_mc1", this.getNextHighestDepth(), {_x:100, _y:100});

// ovaj nece:
attachAndPlay("muving", "muvi_mc2", this.getNextHighestDepth(), {_x:200, _y:100});


pregazio sam attachMovie metodu da zaustavi svaki filmić - ako hoćeš attachat nešto da krene odmah, koristiš 'attachAndPlay'... ne moraš nikakav code stavljat u filmiće

sretno ak ćeš ovo koristit Confused druge stvari isto trebaju attachMovie, ovo će sigurno razbit tonu stvari, ali takav si behaviour htio - pametnija rješenja postoje, kao subclassanje MovieClip klase u kojoj bi bio neki custom behavior, a tvoji filmići bi bili instance te subklase

...a uvijek možeš umjesto da pregaziš attachMovie napravit neku koja se zove attachAndStop()
Back to top
View user's profile Send private message Send e-mail Visit poster's website
dblchckd



Joined: 02 Apr 2006
Posts: 106

PostPosted: 18.06.2006 01:12    Post subject: Add user to your forum ignore list Reply with quote

hvala sulien Smile
Sulien wrote:
...a uvijek možeš umjesto da pregaziš attachMovie napravit neku koja se zove attachAndStop()

Da, to definitivno... ne bi prepisivao attachMovie. Dosao sam do slicnog rjesenja, ali tvoje mi se vise svidja. Ja sam definirao funkciju attachMovieAndStop() u kojoj sam kao i ti attachirao mc, stopirao ga, i stavio return. Ali sam morao staviti i parametar targetMc na kojem bi pozvao attachMovie(). Tvoje mi je bolje jer si definirao attachAndPlay kao novu MovieClip metodu, (uopce mi to nije palo napamet), tako da onda ne moras koristiti targetMc parametar, pa je koristenje isto kao i kod attachMovie... to je intuitivnije. Ja jedino nisam koristio ovaj kod koji stiti ako se ne doda initObject (if(!initObject) initObject = null;) jer mislim da nije nuzan, nema posljedica ako nista ne dodas ili dodas neispravan argument...

Evo na kraju koda za koji sam se odlucio:

Code:
MovieClip.prototype.attachMovieAndStop = function(link, newName, depth, initOb){
   var attached = this.attachMovie(link, newName, depth, initOb);
   attached.stop();
   return attached;
}
attachMovieAndStop("mc", "mc", 1)
//a sad kreni konacno :)
mc.play();
Back to top
View user's profile Send private message
Sulien



Joined: 04 Jan 2004
Posts: 2905
Location: Zagreb

PostPosted: 18.06.2006 17:14    Post subject: Add user to your forum ignore list Reply with quote

Je, ovo sa initObject možda nije bilo nužno

BTW, welcome to OOP Wink
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Ivan Podrug - e1



Joined: 15 Apr 2005
Posts: 316
Location: Solin

PostPosted: 20.06.2006 10:04    Post subject: Add user to your forum ignore list Reply with quote

bojim se da sam ja tražio rješenje za krivi problem. :/

iipak; dobra rasprava. Smile
Back to top
View user's profile Send private message
Display posts from previous:   
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    mi3dot.org Forum Index -> Flash All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group