Toon posts:

random image in verschillende frames

Pagina: 1
Acties:

Verwijderd

Topicstarter
beste mensen,

Ik heb een script die willekeurig een plaatje laat op een pagina.
>>>>>>>>>>>>
currentIndx=0;

MyImages=new Array();
MyImages[0]='images/0.gif';
MyImages[1]='images/1.gif';
MyImages[2]='images/2.gif';
MyImages[3]='images/3.gif';
MyImages[4]='images/4.gif';
MyImages[5]='images/5.gif';
MyImages[6]='images/6.gif';
MyImages[7]='images/7.gif';
MyImages[8]='images/8.gif';

imagesPreloaded = new Array( 8 )

for (var i = 0; i < MyImages.length ; i++) {
imagesPreloaded[i] = new Image(319,232)
imagesPreloaded[i].src=MyImages[i]
}

function newImage() {
currentIndx=Math.round(Math.random()*8)
document.theImage.parent.frame1.src=imagesPreloaded[currentIndx].src
document.theImage.parent.frame2.src=imagesPreloaded[currentIndx].src
document.theImage.parent.frame3.src=imagesPreloaded[currentIndx].src
}
>>>>>>>>>>>>>>>>>

en in d body:
<body onLoad="newImage()">
[img]"images/1.gif"[/img]

Waneer ik op een enkele pagina werk dan laat hij het plaatje goed.
Ik laat dan "...parent.frame1...." weg.

Alleen heb ik mijn plaatje in 3 delen opgeknipt en in 3 frames geplaats.
dus 0.gif 1.gif 2.gif zijn eingelijk 1 plaatje. eingelijk moet ik deze 3 wel in volgorde laden en zo ook voor 3-5 en 6-9.
iemand enige tips hiervoor???

wanneer ik: [img]"images/1.gif"[/img]
in frame1 plaats dan werkt het script niet.
moet ik dan iets "global" maaken?

Iemand enige suggesties hoe ik verder zou kunnen handelen?

alvast bedankt voor jullie moeite.

[ Voor 28% gewijzigd door Verwijderd op 18-08-2003 21:46 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 13:22

crisp

Devver

Pixelated

Je maakt een hoop fouten zie ik al; waar zal ik eens beginnen?
Nou, bij het begin dan maar. Je hebt 3 frames en in elk frame heb je een pagina met ongeveer deze code (verkort):
HTML:
1
2
3
4
5
6
<html>
...
<body>
<img name="randimg" src="images/1.gif" width="232" height="319">
</body>
</html>


goed, nu je code in het andere frame. allereerst even dit:
JavaScript:
1
imagesPreloaded = new Array( 8 )


je hebt echter 9 images, en leer jezelf aan een statement altijd af te sluiten met een puntkomma. Het aangeven hoeveel elementen er in de array moeten is echter optioneel en wordt meestal weggelaten. Verder declareer je door er var voor te zetten (wel zo netjes):

JavaScript:
1
var imagesPreloaded = new Array();


goed, je preloader zou dan goed moeten werken; nu de functie newImage(), die nemen we even regel voor regel door.
Je wilt eigenlijk kiezen uit 3 images verdeeld over 3 plaatjes; je random nummer moet dus een getal van 0 t/m 2 zijn. Leer jezelf ook aan Math.floor of Math.ceil te gebruiken ipv Math.round bij het selecteren van een random getal. Last but not least kunnen we het random getal weer met 3 vermenigvuldigen zodat hij naar het 1e plaatje wijst (0, 3 of 6):

JavaScript:
1
var currentIndx = 3 * Math.floor(Math.random()*3);


currentIndx hoeft niet global te zijn want je gebruikt 'm toch alleen in deze functie, dus haal je globale declaratie maar weg ;)

dan moeten we nog weten hoe we de images in de andere frames kunnen aanspreken; om te beginnen moeten we het andere frame selecteren:

code:
1
parent.frames['frame1']


binnen dat frame willen we het plaatje selecteren; het beste doen we dat met de images collectie (werkt ook in oudere browsers):

code:
1
document.images['randimg'];


deze voorgaande twee kunnen we zo aan elkaar plakken; dan nog even zorgen dat je alle 3 de images veranderd, en we zijn klaar:

JavaScript:
1
2
3
4
5
6
7
8
9
function newImage() {

  var currentIndx = 3 * Math.floor(Math.random()*3);

  parent.frames['frame1'].document.images['randimg'].src = imagesPreloaded[currentIndx].src;
  parent.frames['frame2'].document.images['randimg'].src = imagesPreloaded[currentIndx+1].src;
  parent.frames['frame3'].document.images['randimg'].src = imagesPreloaded[currentIndx+2].src;

}


beetje duidelijk zo?

Intentionally left blank


Verwijderd

Topicstarter
Hee crisp,

Heb je verbeteringen doorgevoerd en ben daardoor al een stuk opweg geholpen snap nu ook wat er fout ging.

Het werkt trouwens nu wel :)

Ik ben je echt zo ontzettend dankbaar echt super!! _/-\o_

Thanks,
F.

[ Voor 94% gewijzigd door Verwijderd op 19-08-2003 00:17 ]