PDA

Volledige versie bekijken : Mask probleem


GeniusGeri
%Europe/Berlin %439 %2008, 10:32
Ik ben momenteel bezig met een photo-slideshow die volledig via actionscript draait. Ik haal uit een xml een aantal images. Dat gaat allemaal prima. Maar nu wil ik er een masker overheen plaatsen. Ik heb in mijn library een mc met de linkage-name 'mask'.

Ik heb de volgende functie gemaakt die de plaatjes inlaad:


loadImages = function()
{
var mcl:MovieClipLoader = new MovieClipLoader();
var mclobj:Object = new Object();
mcl.addListener(mclobj);
mclobj.onLoadInit = function(targetMC)
{

}

mclobj.onLoadComplete = function(targetMC)
{
alphaImages(0); // eigen functie (werkt goed)
wait(); // eigen functie (werkt ook goed)
targetMC.setMask(mask); // werkt niet
}

// creeer movieclips en stop de plaatjes erin (gaat ook goed)
for(i=0;i<=(_level0.filelength-1);i++)
{
var image:MovieClip = createEmptyMovieClip("image"+i,i);
mcl.loadClip(files[i], image);
}

var mask:MovieClip = this.createEmptyMovieClip("mask", this.getNextHighestDepth());
this.attachMovie("mask", "mask", this.getNextHighestDepth(), {_x:35.6, _y:19.1});
}


Het masker werkt zo dus niet. Ik maak vast een denkfout. Ik had o.a. ook geprobeerd op de mask niet in de onLoadComplete te plaatsen, maar onder in de for-loop (met image.setMask(mask)).

Ik zie overigens wel het maskplaatje over mijn afbeeldingen heen.


Kunnen jullie een zetje in de goede richting geven?

GeniusGeri
%Europe/Berlin %929 %2008, 22:18
Ik was even benieuwd of het probleem duidelijk is, of dat ik nog meer moet toelichten?

Jan
%Europe/Berlin %940 %2008, 22:34
var mcl:MovieClipLoader = new MovieClipLoader();
var mclobj:Object = new Object();
mcl.addListener(mclobj);
mclobj.onLoadInit = function(targetMC)
{
alphaImages(0); // eigen functie (werkt goed)
//wait(); // als je een 'wait 'functie moet scrhrijven ben je 9 keer van de 10 ergens fout bezig. eigen functie (werkt ook goed)
targetMC.setMask(mask); // werkt niet
}
//___________________________
loadImages = function()
{
// creeer movieclips en stop de plaatjes erin (gaat ook goed)
for(i=0;i<=filelength-1;i++)
{
var image:MovieClip = createEmptyMovieClip("image"+i, this.getNextHighestDepth());
mcl.loadClip(files[i], image);
}
this.attachMovie("mask", "mask", this.getNextHighestDepth(), {_x:35.6, _y:19.1});
}
Ik zie overigens wel het maskplaatje over mijn afbeeldingen heen.
Wat is dan eigenlijk het probleem?

Groeten,
Jan

PS: onLoadInit komt na onLoadComplete en pas binnen de onLoadInit event handler kan je de ingeladen content benaderen. Deze is nog niet beschikbaar bij de onLoadComplete.
De bytes zijn dan wel al binnen maar het staat nog niet op je stage.

GeniusGeri
%Europe/Berlin %951 %2008, 22:49
In de bijlage heb ik een screenshot geplaatst. Het grijze gedeelte in het midden is m'n masker. Alleen hij maskt dus niet. Dat is het probleem. Dus als iemand weet wat ik fout doe...?

Ik zal eens verschillende dingen proberen in de onloadinit ipv de onloadcomplete. Ik dacht namelijk dat je pas bij de onloadcomplete alles kon doen.

mmrockzz
%Europe/Berlin %955 %2008, 22:56
Actionscript wordt van boven naar beneden gelezen, dus misschien moet je de setMask echt helemaal onderaan zetten (Ik denk dat vanwege het feit dat je setMask gebruikt al VOORDAT een movie clip is gecreeerd)

GeniusGeri
%Europe/Berlin %994 %2008, 23:52
Probleem is opgelost. De fout zat in deze regel:
var mask:MovieClip = this.createEmptyMovieClip("mask", this.getNextHighestDepth());

Toen ik deze weghaalde werkte het wel. Ik denk omdat deze regel de mc met de linkage uit de library overschrijft?? In ieder geval gaat het nu wel goed. Waar ik overigens ook nog achter kwam was dat ik de images eerst in een holder moet stoppen en dan op die holder de setMask uitvoeren. Anders werd de mask alleen op de laatst geladen image toegepast.

Bedankt iig voor het meedenken.