[FLASH MX] preloaden van externe images

Pagina: 1
Acties:

  • ZOMERZON
  • Registratie: Juni 2001
  • Laatst online: 13-03 11:45

ZOMERZON

Voor Geen Cent Gaat De Zon Op

Topicstarter
Ola,

Ik heb een flash swf'je die externe plaatjes (jpg) inlaat wanneer men die swf laad.
Maar stel nou dat ik 4 x 80kb jpg's heb, dan duurt het even voordat niet-adsl'ers de jpg's kan zien.

Is het mogelijk om een script in te bouwen die de grootte van de jpg's calculeert en hierop een preloader baseert ???

Verwijderd

je hebt een holder'MC nodig met daarin je targetMC en een dynamic Textfield
op de holderMC zet je je preloader script :

_root.holderMC.targetMC.getbytesLoaded()
(met bv enterFrame event)

  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 26-08 17:42

XangadiX

trepanatie is zóó kinderachtig

dat dynamic textfield heb je alleen nodig als je die info naar het scherm wil teerugschrijven, het idee is dat met getbytesLoaded() je het aantal geladen bytes ophaald en in een variabele stopt en met getBytesTotal() het aantal te laden bytes ophaald, met die waarden kun je dus een preloader maken.

Je laad je plaatje in naar een holderMC en vraagt daarvan de bytesLoaded en bytesTotal op, door die twee van elkaar af te trekken krijg je dus het aantal bytes dat je nog moet. Apert wat je met die TargetMC wilt snap ik niet precies.

Stoer; Marduq


Verwijderd

"textfield" ik nam aan dat 'Zomerzon' wilde laten zien dat er wel wat gebeurde tijdens het inladen van de jpg's, textfield is dan het eenvoudigste voorbeeld

xtra targetmc, is meer een gewoonte met als doel overzichtelijker te werken,
zo kunnen er ook makkelijker meerdere jpg's tegelijkertijd ingeladen worden, gepostioneerd etc.. (evt met meerdere preloaders)

  • ZOMERZON
  • Registratie: Juni 2001
  • Laatst online: 13-03 11:45

ZOMERZON

Voor Geen Cent Gaat De Zon Op

Topicstarter
Hmmm..... ik bedenk me opeens dat er dan nog iets is.
Stel nou dat je 2 pagina's hebt, en in elke pagina zit een swf met een daarbij horende reeks externe jpg's.

Stel nou dat de bezoeker van de ene naar de andere switch, en dan weer terug.
Dan moet de swf steeds weer preloaden....of kan ik die ook in de cache knikkeren meteen ?????

Verwijderd

bij de tweede keer staan ze toch al in de cache?
t zal dan allicht sneller gaan

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
niet echt: op een Windows 2000+ systeem en IE alvast wel, maar op een Apple Computer niet... Uit ervaring en testing...

  • ZOMERZON
  • Registratie: Juni 2001
  • Laatst online: 13-03 11:45

ZOMERZON

Voor Geen Cent Gaat De Zon Op

Topicstarter
Jij hebt het over externe swf'jes in een hoofd-container gooien, ik heb het over externe plaatjes.
Er zit toch wel een klein verschil in neem ik aan.

[ Voor 86% gewijzigd door ZOMERZON op 03-01-2003 21:22 ]


Verwijderd

offtopic:
dude, als je eruit bent hoe t moet kun je me dan mailen ofzo, want ik zit echt helemaal :( en kom dr totaal NIET meer uit... bvd

  • ZOMERZON
  • Registratie: Juni 2001
  • Laatst online: 13-03 11:45

ZOMERZON

Voor Geen Cent Gaat De Zon Op

Topicstarter
Goed, ik ben er nog steeds niet uit :(

Wat betreft de preloader, ik kan dat heel simpel oplossen met

totalBytes = this.getBytesTotal();
loadedBytes = this.getBytesLoaded();
remainingBytes = totalBytes-loadedBytes;
percentDone = int((loadedBytes/totalBytes)*100);
bar.gotoAndStop(percentDone);
ifFrameLoaded ("100) {
gotoAndPlay("3);
}


maar wat er verder moet gebeuren is dit.
Ik heb in een scene onderstaande codes staan in 3 aparte frames.

myMC.loadMovie("pic01.jpg");
myMC.loadMovie("pic02.jpg");
myMC.loadMovie("pic03.jpg");

Wat ik wil doen is dat de preloader detecteert hoe groot de jpg's zijn en hierop de preloader percentages baseert.
Wat betreft de cache..... het liefst houd 'ie de jpg's dan in zijn geheugen zodat elke keer dat die swf wordt aangeroepen dat die jpg's niet elke keer geladen moet worden.

Kan iemand me helpen ?? ik heb al begrepen dat er een 'holder' moet komen.... maar hoe doe ik dat voor 3 jpg's ?

Verwijderd

als je een holdermc hebt
daarin zet je een standaard preloader script van drie frames (ja het kan volgens mij ook met onclipevent etc....)

frame 1 stop actie;
frame 2 :
totaal1 = _root.targetMC1.getBytesTotal();
totaal2 = _root.targetMC2.getBytesTotal();
etc...
_root.textfield1.text = Math.round((_root.holderMC.target1.getBytesLoaded()/totaal)*100) add "%"// add totaal;
etc...
frame 3: gotoAndplay(2)

// werk niet met "this", maar met volledige paden
in de holder mc heb je het aantal benodigde targetMC's staan

//
trigger het geheel met een onRelease -> holderMC.gotoAndPlay(2)

//
getest op win 2000;; MX;
geeft verschillende percentages aan in loading + totaal aantal bytes

//--------------
jpg inladen vanuit cache geeft met win 2000; IE 6 inderdaad een sneller resultaat

// 8)7
totaal1 = _root.targetMC1.getBytesTotal();
totaal2 = _root.targetMC2.getBytesTotal();

dit moet zijn:
_root.holderMC.target1.getBytesTotal()
_root.holderMC.target2.getBytesTotal()
//
je maakt dus de holderMC, daarin plaats je drie targetMC's; waarin je de jpg's laad

[ Voor 21% gewijzigd door Verwijderd op 07-01-2003 15:07 ]


  • ZOMERZON
  • Registratie: Juni 2001
  • Laatst online: 13-03 11:45

ZOMERZON

Voor Geen Cent Gaat De Zon Op

Topicstarter
Stukje bij beetje begin ik het een beetje te begrijpen...

Hoe kan ik een HolderMC maken waarin de 3 jpgs in worden geladen ??

Ik neem aan dat ik het ook in 2 scene's kan doen ??
dus dat ik in de eerste scene de script van Apert inzet....en dat ik in scene 2 die holdermc met daarin die 3 jpgs erin , erin kan zetten ??

Verwijderd

je hoeft geen twee scenes te gebruiken

met een button oid, of op het moment waarop jij het wilt trigger jij de event dat de holderMC op de hierboven beschreven manier gaat lopen dan krijg je t preloader effect

dus t kan in 1 frame op de root

  • ZOMERZON
  • Registratie: Juni 2001
  • Laatst online: 13-03 11:45

ZOMERZON

Voor Geen Cent Gaat De Zon Op

Topicstarter
Ervan uitgaande dat ik geen button wil hebben die het gaat triggeren, dan neem ik aan dat ik frame 1 met > stop kan skippen toch ?


wat ik nu dus heb is dit, ik heb het een beetje op een ander manier gedaan, maar hoop dat het dezelfde resultaat oplevert.
Kan iemand even checken wat ik nog mis hieraan ?? want als ik de swf afspeel dan laat 'ie dus de holder zien met daarin pic03.jpg

Zijn de plaatjes gecached als ik onderstaande script gebruik ???

--------------------------------------------------------------------------------------------------------

this.createEmptyMovieClip("holder1", 1);
this.createEmptyMovieClip("holder2", 2);
this.createEmptyMovieClip("holder3", 3);

holder1.loadMovie("pic01.jpg");
holder2.loadMovie("pic02.jpg");
holder3.loadMovie("pic03.jpg");

this.onEnterFrame = function() {

totalBytes = this.getBytesTotal();
loadedBytes = this.getBytesLoaded();
remainingBytes = totalBytes-loadedBytes;
percentDone = int((loadedBytes/totalBytes)*100);
bar.gotoAndStop(percentDone);
percent = (this.holder.getBytesLoaded()/this.holder.getBytesTotal())*100;
if (!isNan(percent)) {
trace(percent+"% loaded");
} else {
trace("0% loaded");
}
if (percent == 100) {
gotoAndPlay("main", 1);
}
};

--------------------------------------------------------------------------------------------------------
Pagina: 1