webForumDet fria alternativet

Förladdas bilderna ur arrayen rätt ?

1 svar · 290 visningar · startad av Sune

SuneMedlem sedan nov. 1999367 inlägg
#1

Tänker jag rätt?
Jag vill förladda ett gäng bilder ur en array (pict).
Ur denna vill jag hämta det första värdet ur parantesen ('*.gif').
Framför detta lägger jag var imgsDir (images/*.gif).
Blir det nu så att alla fem gifbilder förladdas?

Är detta rätt skrivet av mig i detta javascript, förstår inte hur jag ska kolla det?

var imgsDir = 'images/' ; 
pict = new Array() ;
pict[0] = new picture ('1.gif','Text1') ;
pict[1] = new picture ('2.gif','Text2') ;
pict[2] = new picture ('3.gif','Text3') ;
pict[3] = new picture ('4.gif','Text4') ;
pict[4] = new picture ('5.gif','Text5') ;

function picture(picUrl,picText) {
  this.pUrl=picUrl;
  this.pText=picText;
}

function preload(){
  for(i=0; i<pict.length; i++){
    pict[i] = new Image();
    pict[i].src = imgsDir+pict[i].pUrl;
  }
}
preload() ;

Hoppas ni förstår vad jag menar!

dectgapMedlem sedan sep. 20021 655 inlägg
#2

Det blir fel av den anledningen att du på raden

pict[ i ] = new Image();

i for-loopen ersätter ett picture-objekt med ett Image-objekt, men försöker sedan hämta pict[ i ].pUrl, när pict[ i ] alltså referar till ett nytt Image-objekt istället.

Att använda anonyma Image-objekt på följande vis ska däremot fungera:

var imgsDir = 'images/' ; 
var pict = new Array() ;
pict[0] = new picture ('1.gif','Text1') ;
pict[1] = new picture ('2.gif','Text2') ;
pict[2] = new picture ('3.gif','Text3') ;
pict[3] = new picture ('4.gif','Text4') ;
pict[4] = new picture ('5.gif','Text5') ;

function picture(picUrl,picText) {
  this.pUrl=picUrl;
  this.pText=picText;
}

function preload(){
  for(i=0; i<pict.length; i++){
    (new Image()).src = imgsDir+pict[i].pUrl;
  }
}
preload();
135 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)