Avatar billede oleiso Nybegynder
21. maj 2007 - 16:15 Der er 5 kommentarer

Load af fotos i Array

Jeg er ved at lave en hjemmeside i flash, hvor et af menupunkterne er et fotogalleri, hvor jeg har placeret billederne i en mappe, pictures, og derefter lavet et script der ser sådan ud >

stop();

images = new Array("image1.jpg", "image2.jpg", ... );
var count = 0;

function getNextImage() {
   
    if (count+1<(images.length)) {
        count++;
        imageTarget.loadMovie("pictures/"+images[count]);
    }
}

getNextImage();
function getLastImage() {
    if (count>=0) {
        imageTarget.loadMovie("pictures/"+images[count]);

        if (count>0) {
            count--;
        }
    }
}

Hele siden ligger i en fil nu, men når jeg tester den, tager den en del tid om at loade det ene foto efter det andet, når man trykker. Hvordan undgår jeg det?
Skal jeg lave en ekstern fil for billederne, kan de loades ind i det øjeblik man åbner for siden?
Avatar billede _k Nybegynder
22. maj 2007 - 13:53 #1
Du kan gøre et af tre:

1: Load billederne under din generelle preload af filmen
2: Load billederne ind udenfor stagen imens brugeren kigger rundt. Du behøver ikke loade dem ind det "rigtige" sted. Billeder bliver cachet på brugerens maskine, og vil derfor blive hentet derfra (og det er hurtigt)
3: Lav en preloader på hvert billede, så man kan se hvor meget som er hentet og hvor meget mangler. Har du mange billeder er det efter min mening den bedste løsning.
Avatar billede oleiso Nybegynder
22. maj 2007 - 14:05 #2
OK, jeg har en del billeder, og vil egentlig gerne have, at de begynder at loade ind i det øjeblik man kommer ind på siden, så de ligger klar når den besøgende klikker sig ind på fotoalbummet. Men det skal på den anden side ikke forlænge tiden for at komme indpå siden fra start af. Så hvad gør jeg helt konkret?
Avatar billede _k Nybegynder
22. maj 2007 - 14:25 #3
Du kan jo så loade et par af billederne samtidig med din "start"-preloader. Når de er lodet kan du lukke brugeren ind, og udenfor stagen loade nogle flere, eller måske endda resten? Rent konkret laver du et eller flere mc'er, flytter dets x-position ud på -1000 og loader ind i dem. Hvis det skal være helt godt, kan du så slette mc'erne igen når alt er loadet (billederne ligger som sagt stadidigvæk i cachen)
Avatar billede oleiso Nybegynder
22. maj 2007 - 14:49 #4
Ja, det lyder nemt :-)
Men jeg er rimelig ny og famlende, så jeg er noget i tvivl om hvad jeg skal gøre og hvor rent kode-/tidslinemæssigt...
Avatar billede _k Nybegynder
22. maj 2007 - 15:43 #5
Har du en preloader i starten af din film?

Ellers vil proceduren være noget i retning af (og denne kode er absolut ikke testet, da jeg ikke sidder med Flash lige nu):

for(var i:Number=0;i<images.length;i++) {
  var mc:MovieClip = _root.createEmptyMovieClip("img_preload"+i, _root.getNextHighestDepth());
  mc._visible = false;
  tjekLoad(mc);
  mc.loadMovie(images[i]);
}

function tjekLoad(mc:MovieClip) {
  mc.onEnterFrame = function() {
    if(mc.getBytesLoaded > 0 && mc.getBytesLoaded >= mc.getBytesTotal) {
      this.removeMovieClip();
      delete this.onEnterFrame;
    } else {
      trace("still loading: " + mc);
    }
  }
}

Og du sætter så dette script ind i starten et eller andet sted.
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