Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[AS&Flash] imageloop dmv attachMovie veroorzaakt vertraging*

Pagina: 1
Acties:

  • BasNation
  • Registratie: Mei 2004
  • Laatst online: 12-10 13:14
Ik ben bezig met een zelfgemaakt loop van images. Ik wilde niet de standaard "slideshow" gebruiken die je overal kan vinden want die gaan állemaal tussen de plaatjes door faden naar wit om de nieuwe te laden. Dit is niet wat ik wil. Ik wil dat de nieuw geladen afbeelding fade-in terwijl de oude fade-out. Een soepele en mooie overgang is het resultaat.

Het is allemaal nogal een gehaast karwijtje en is nog heel ruw, maar ik zit nu toch wel met een groot probleem. Ik maak namelijk om dit te bereiken gebruik van de attachMovie manier om ieder nieuw plaatje op een aparte Depth te creëren. Tegelijkertijd laat ik de voorgaande MC (eveneens gemaakt door attachMovie) een fade-out doen met aan het eind een: this.unloadMovie();

Zo ziet de main timeline eruit.
Frame 1:
code:
1
2
3
4
_global.k = 1; // First image to load
_global.kmax = 4; // Total number of images
_global.l = 0; // Layer (depth) counter
_global.slidedelay = 1000; // Picture interval

Frame 2:
code:
1
2
3
4
5
6
7
8
9
function loadImage() {
    this.attachMovie("imageloader", l, this.getNextHighestDepth());
    _global.k = k++;
    _global.image_old = l-1;
    ++l;
    if (k == kmax + 1) {k = 1};
};

loadImage();

Frame 3:
code:
1
2
3
4
5
6
7
stop();

myInterval = setInterval(pause_slideshow, slidedelay); 
function pause_slideshow() { 
    clearInterval(myInterval);
    gotoAndPlay(2);
};


Vervolgens heb ik in de imageloader timeline:
Frame 1:
code:
1
loadMovie(["images/intro/" + k + ".jpg"], imagecontainer);

Frame 2 = blanc
Frame 3:
code:
1
2
3
4
5
6
7
8
9
10
stop();

if (imagecontainer.getBytesLoaded() >= imagecontainer.getBytesTotal())
{
    gotoAndPlay("fade_in");
    _root[image_old].gotoAndPlay("fade_out");
}
else {
    gotoAndPlay(2)
};

En bij de laatste frame dus hetgeen waar het om gaat:
code:
1
2
this.unloadMovie();
trace("unloading" + this._name);


Het probleem is dus dat ondanks dat ik bij het laden van iedere opvolgende MC de oude unloadMovie laat doen, de animatie naar verloop van tijd ontzettend gaat stotteren... alsof er ergens nog iets achterblijft dat niet gewist wordt.

Is er ergens een buffer ofzo die ik kan wissen?

  • LB Back
  • Registratie: November 2004
  • Laatst online: 03-06 11:07
Waarom attach je niet gewoon die twee imageloader mcs eenmalig en laad daar gewoon de afbeelding steeds in? Als je een nieuwe afbeelding in een mc laadt unload je automatisch de oude. Die depth doe je dan met swapDepth: elke nieuwe afbeelding komt dan op de laagste depth.

Met unloadMovie blijft de mc bestaan. Zou je een afbeelding laden in een mc en hem dan met unloadMovie verwijderen dan is de foto weg, ook uit je geheugen, maar de mc bestaat nog en zijn properties ook. unloadMovie werkt met swfs of andere extern ingeladen objecten.

In jouw geval attach je steeds weer een mc die niet verdwijnt, het worden er zo steeds meer, vandaar dat stotteren.

  • BasNation
  • Registratie: Mei 2004
  • Laatst online: 12-10 13:14
aha, en ik maar denken dat bij unloadMovie de gehele MC werd verwijdert... dat is dan duidelijk, bedankt :).