PDA

Volledige versie bekijken : Fotos Inladen: Interval inside Interval


NieLz
%Europe/Berlin %760 %2005, 19:15
Hoi, de bedoeling is dat ik een header maak, waarin foto's random dynamisch worden ingeladen.
hiervoor heb ik onderstaand stukje code.

In deze code zit een eerste interval dat om de 5 seconden een nieuwe foto laad faden over de eerste foto. Die animatie mag pas beginnen als de tweede foto volledig is ingeladen, het tweede interval checkt dit. Maar blijkt niet te werken, de trace van "moo" wordt enkel om de 5 seconden weergegeven van (eerste interval).

_root.maxFotos = 15;

_root.fotoNummer1 = Math.floor( Math.random()*_root.maxFotos );
_root.maintween.image1.loadMovie("images/headers/" + "mb_header" + _root.fotoNummer1 + ".jpg")

picInterval = setInterval(picSlide,5000); // om de 5 seconden

function picSlide () {
_root.fotoNummer2 = Math.floor( Math.random()*_root.maxFotos );
_root.fotoNummer1 = _root.fotoNummer2;
_root.maintween.image2.loadMovie("images/headers/" + "mb_header" + _root.fotoNummer2 + ".jpg");
fotoInterval = setInterval(fotoGeladen, 100);
}

function fotoGeladen() {
trace("moo");
teladenB = _root.maintween.image2.getBytesTotal();
geladenB = _root.maintween.image2.getBytesLoaded();
_root.loaded1.text = geladenB;
_root.load1.text = teladenB;
if(teladenB <= geladenB) {
_root.maintween.gotoAndPlay(2); // start animatie
clearInterval(fotoInterval);
}
}

stop();

Site staat op http://www.digx.be/~mb/
Zoals je ziet wordt er niet gekeken of de foto wel is ingeladen, maar begint de animatie sowiso, wat slechte resultaten geeft.
Als je even wacht tot hij een foto inlaadt die al was ingeladen zie je dat het wel mooi fade ...
De twee cijfers in de banner zijn teladenB en geladenB. Deze blijken ook niet te kloppen op een foto die nog niet is ingeladen

Help any1? thx ;)

Laiverd
%Europe/Berlin %763 %2005, 19:19
Je zet nu iedere keer opnieuw fotoInterval in picInterval. Je moet ze dus echt uit elkaar trekken.

NieLz
%Europe/Berlin %764 %2005, 19:21
Ja maar die fotoInterval wordt toch direct gecleared als de foto is ingeladen, dit duurt nog geen 3 seconden ...

theFlashWizard
%Europe/Berlin %771 %2005, 19:30
anders een onEnterFrame functie starten? ipv een interval..

NieLz
%Europe/Berlin %774 %2005, 19:35
hoe bedoel je? onClipEvent (enterFrame){} als je over de movieclip gaat?

Laiverd
%Europe/Berlin %775 %2005, 19:37
Je roept 1x per 5 seconden picInterval aan; in de functie die je daarin aanroept start je iedere keer opnieuw fotoInterval. Al met al is de huidige constructie vragen om intervals die nooit worden gecleared. Waarom niet 1 interval dat checkt of een foto geladen is, en als dat zo is, een nieuwe foto inlaadt. Simpel. En onEnterFrame is natuurlijk ook een mogelijkheid, maar daar kun je best tegen hetzelfde probleem aanlopen.

John

NieLz
%Europe/Berlin %798 %2005, 20:09
ik heb het aangepast maar blijkt nog niet te werken

ik denk dat de fout hier zit -> if(teladenB <= geladenB) {

ik print deze 2 af, maar ze zijn altijd gelijk aan elkaar.
is teladenB = _root.maintween.image2.getBytesTotal(); wel correct, ook al is de foto niet ingeladen?

NieLz
%Europe/Berlin %826 %2005, 20:49
in orde, ik moest gewoon _root.maintween.image2 weer resetten, zodat er geen bytes meer te lezen zijn van de vorige foto, works like a charm :)