Poslao: 03 Sep 2009 00:45
|
offline
- zoranez
- Super građanin
- Pridružio: 30 Maj 2005
- Poruke: 1014
- Gde živiš: Mbabane
|
Aplikacija A u movieClip ucitava (load-uje) aplikaciju B.
Kao reakcija na odredjen event, aplikacija A unload-uje aplikaciju B.
Destruktori u actionscriptu 2 ne postoje (ja ne nadjoh). Kako aplikacija B da zna kako da se ocisti memoriju koju je zauzela. Tacnije, gdje je okidac koji kaze "aplikacijo nestajes, ocisti za sobom"?
Cak i da u svakom svom SWFu napravim funkciju koja ce osloboditi memoriju, ne znam nacin da se ona bude pozvana, a da to ne radim ja eksplicitno. Aplikacija A koja ucitava aplikaciju B (a to moze biti bilo sta) nije duzna da brine o pozivanju njenih destruktora zar ne?
Kako se ovo rjesava?
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 03 Sep 2009 07:30
|
offline
- Tamtitam
- Legendarni građanin
- Pridružio: 19 Maj 2005
- Poruke: 5224
- Gde živiš: Oslo
|
U, ti si bas uporna sa AS2.0.
Nisam nikad cula da AS2.0 ima dobro resenje bez memory leak za ovako nesto.
AS3.0 zato ima sta god ti srce pozeli.
unloadAndStop(); (dodaj: () na kraj linka)
listener: Event.UNLOAD;
...
Ako se ikad odlucis (dobijes dozvolu) za AS3.0, svi tvoji problemi ce biti reseni.
|
|
|
|
Poslao: 03 Sep 2009 10:26
|
offline
- zoranez
- Super građanin
- Pridružio: 30 Maj 2005
- Poruke: 1014
- Gde živiš: Mbabane
|
Takav mi je posao, nisam birala .
Prosto mi je nevjerovatno da jedna ovako vazna stvar nema rjesenje.
Imam widget koji ucita youtubeplayer. Kad aplikacija ubije widget player ostane. Ovo je jednostavna aplikacija a rjesenje za unloadovanje ovog pleyera em daje glavobolje, em je zaista glupa zakrpa i krajnje idiotski nacin rjesavanja problema, ne samo da nije dobar vec je i pitanje koliko je stabilan ...
Uh ...
|
|
|
|
Poslao: 04 Sep 2009 09:03
|
offline
- Tamtitam
- Legendarni građanin
- Pridružio: 19 Maj 2005
- Poruke: 5224
- Gde živiš: Oslo
|
Naravno da u dvojci uvek mozes da koristis loadMovie ili loadMovieNum pa da pocistis sa unloadMovie , unloadMovieNum. Cini se da bi to odradilo posao i resetovalo tvoj player i sve to sto ucitavas. Jesi li to probala?
|
|
|
|
|
Poslao: 04 Sep 2009 09:47
|
offline
- Tamtitam
- Legendarni građanin
- Pridružio: 19 Maj 2005
- Poruke: 5224
- Gde živiš: Oslo
|
Da li sam dobro razumela, tu fali jedan zajednicki roditelj koji bi vodio racuna o svoj svojoj deci?
A da organizujes po klasama i da napravis posebnu klasu, recimo, Ucitavac koja ce znati sve o delovima koji su ucitani?
To zahteva novu reoganizaciju cele aplikacije, ali mozda pomogne.
|
|
|
|
Poslao: 04 Sep 2009 14:39
|
offline
- zoranez
- Super građanin
- Pridružio: 30 Maj 2005
- Poruke: 1014
- Gde živiš: Mbabane
|
Hm ... pa ne znam sad
Iz swf aplikacije ucitavam swf widget. Glavna aplikacija ima svoj loader kome kaze
swfloader.loadClip(uri_swf, swf_holder);
i sad moj swf widget tu radi svoje, ucita player uzme memorije ...
u jednom momentu mi dosadi i cu ja iz glavne aplikacije uraditi ovo
swfloader.unloadClip(swf_holder);
Ovo ce njega "pocistiti" sa scene, ali ova komanda ni na koji nacin ne obavjestava sam widget da je u toku njegov unload i da mora da ocisti za sobom, tako da ce se skloniti dugmici i to ali ce player ostati.
Dakle nije mi jasno na koji mehanizam ucitani swf moze znati da je u toku njegovo sklanjanje sa scene! Kakav god "ucitavac" napravila u glavnoj aplikaciji, on ne moze da pozove funkciju koja je definisana u wigdetu zar ne?
Moje rjesenje je da sa oba key listener-a (i aplikacije i widget-a) cekam key za uloadovanje widgeta i tako trigerujem akciju. Ovo nikako nije rjesenje koje moze da ostane.
Kako swf igrice na flash sajtovima npr. pisane u AS2 ciste memoriju za sobom?
|
|
|
|
Poslao: 04 Sep 2009 15:37
|
offline
- Tamtitam
- Legendarni građanin
- Pridružio: 19 Maj 2005
- Poruke: 5224
- Gde živiš: Oslo
|
Znaci i sam widget ima svoj load? I unload...
Lepo bi bilo da i load playera u widget moze da se kontrolise iz glavne aplikacije a ne iz widgeta. Onda bi imala punu kontrolu nad aplikacijom.
A ti ne mozes da pozoves iz glavne aplikacije prvo neku widgetovu funkciju koja ce prvo da unloaduje taj player, a tek onda da ti unlodujes i sam widget? Ako funkcija nije zasticena, nego public, moglo bi i to da se odradi.
|
|
|
|
|