Avatar billede purup Nybegynder
31. juli 2008 - 22:53 Der er 6 kommentarer og
1 løsning

Preload images så de er klar når de skal bruges

Hej Ekspeter

Jeg vil gerne preloade 100+ jpg'er. De skal IKKE bruges med det samme. Det er bare vigtigt, at når jeg får brug for dem, er de allerede loadet.

Jeg plejer at preloade jpg'er på følgende måde:

var container:MovieClip = createEmptyMovieClip("container", getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(this);
mcLoader.loadClip("YourImage.jpg", container);
function onLoadInit(mc:MovieClip) {
    trace("onLoadInit: " + mc);
}

...men denne metode opretter movieclips på scenen. Hvis jeg fjerner dem kan jeg ikke _root.attachMovieClip() senere. (som hvis de lå i library'et.

Kan jeg ikke preloade mine 100+ jpg'er direkte ind i library'et eller gøre noget der har samme effekt?
Hjælp!
Avatar billede andersbro Nybegynder
01. august 2008 - 09:14 #1
Det er vel i virkeligheden mange metoder til preloading. Det lyder til at du gerne vil tilføje dine billeder i forskellige movieclips på scenen, og derfor ikke kan nøjes med at preloade dem et bestemt sted?
1. Enten kan du først preloade alle dine billeder (de fylder måske ret meget i flash's hukommelse?), derefter fjerne dem igen. Når du så skal bruge dem ligger de i browserens cache og er meget hurtige at få fat på.
2. Eller du kan preloade billederne til et "preload-bibliotek". Du kan så bruge BitmapData til at lave en kopi af billedet det sted du har brug for det.
Avatar billede purup Nybegynder
01. august 2008 - 13:01 #2
1. Løsning: Kan man regne med at de ligger i browserens hukommelse? I alle browsere?

2. Den kender jeg ikke - kan du ikke forklare lidt nærmere?
Avatar billede andersbro Nybegynder
01. august 2008 - 14:12 #3
1. Hmm, det afhænger jo af hvor meget plads cachen må optage. Alle browsere arbejder med cache så vidt jeg ved, men størrelsen kan variere - og kan jo styres af brugeren.

2. Det er noget i den her stil


import flash.display.BitmapData;

var bitmaps:Array = []:

function saveToBitmap(target:MovieClip):MovieClip {
   
    // target er det movieclip, du lige har loadet et billede ind i
    target._visible = true;
    target._xscale = target._yscale = 100;
   
    // kopier billede til bitmap
    var w:Number = target._width;
    var h:Number = target._height;
    var bmpData:BitmapData = new BitmapData(w, h, true, 0x000000); //true and 0 color allows for transparency
    bmpData.draw(target);
    bitmaps.push(bmpData);
   
   

}

// Du kan så attache dit bitmap-billede til et nyt movieclip
var newMc:MovieClip = this.createEmptyMovieClip("newMc", this.getNextHighestDepth());
newMc.attachBitmap(bitmaps[0], 1, "never", true); //auto for pixelsnapping, true for smoothing
Avatar billede andersbro Nybegynder
01. august 2008 - 14:13 #4
Prøv at slå attachBitmap op i hjælpen.
Avatar billede purup Nybegynder
04. august 2008 - 08:44 #5
1. Kan man regne med, hvis jeg allerede har loadet billederne én gang, og de nu burde ligge i browserens cashe, at jeg, når jeg, når jeg senere for brug for billedet og loader det med loadClip() - at det så er loadet i samme frame?

2. Det kendte jeg slet ikke - det er da ret fedt! MEN, kan det bruges i mit tilfælde? Jeg har ca 100 .jpg'er fra alt imellem 10kb til 120kb. Risikerer jeg måske iike performance problemer? Det synes jeg ikke rigtigt jeg kan læse noget om noget sted.

Mvh. Mads
Avatar billede andersbro Nybegynder
04. august 2008 - 08:58 #6
1. Det ved jeg ikke - jeg arbejder aldrig med mere end én frame. Men du kan jo vente til alle billeder et loadet før du går videre til næste frame.

2. Ja, BitmapData er faktisk meget brugbart. Performance-problemer tror jeg ikke at det giver, men der er jo også begrænsninger for hvor meget RAM flash må bruge. Jeg ville nok satse på at bruge browserens cache i dit tilfælde.
Avatar billede purup Nybegynder
14. januar 2012 - 14:22 #7
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester