# Preload Images



## Spin (21. Feb 2010)

```
function preload(){
	var img;
	for(var i=0; i<preload.arguments.length; i++){
		img = new Image();
	    img.src = preload.arguments[i];
	    bilder[i] = img;
 	}
}
```

Hallo Leute , wie kann ich der Methode jetzt meine Images übergeben ?
Wäre euch sehr dankbar


----------



## Atze (21. Feb 2010)

he, was ist denn preload für ein objekt?


----------



## agentone (21. Feb 2010)

Das sieht mir eher nach JavaScript aus! Wir sind hier aber ein JAVA-Forum

edit: äh, sorry. hab garnich gewusst, dass es hier auch ein javascript-teil gibt... doppel :hust:


----------



## Atze (21. Feb 2010)

oh, hab weder auf die kategorie, noch auf die signatur der methode geachtet  ich schlaf zu wenig 

*edit*

nichtmal "var" hat mich verwirrt :/


----------



## musiKk (21. Feb 2010)

Vorweg: Alles ungetestet, aber mit Buch geprüft.

Du übergibst einfach die Pfade der Bilder der Funktion. Also praktisch [c]preload("bild1.jpg", "bild2.jpg");[/c].
In JavaScript läuft das mit den Funktionsargumenten etwas seltsam... Nur, weil in der Funktionsdefinition keine Bezeichner in den Klammern stehen heißt das nicht, dass keine Argumente übergeben werden können; sie werden nur nicht an Bezeichner gebunden. Es gibt in jedem Fall ein Array [c]arguments[/c], in dem die Argumente stehen.


----------



## byte (21. Feb 2010)

Finde ich ziemlich unschön, da man so nicht an der Signatur erahnen kann, wie die Funktion aufzurufen ist.

Gib doch einfach ein Array rein:


```
preload(["image1.jpg", "image2.jpg", "image3.jpg"]);

function preload(images){
	for(var i=0; i<images.length; i++){
		var img = new Image();
	    img.src = images[i];
	    bilder[i] = img;
 	}
}
```


----------



## musiKk (21. Feb 2010)

Kann man bei Deiner auch nicht; es werden ja keine Image-Objekte, sondern Pfade übergeben. 

Aber im Ernst: Wenn man varargs haben will, muss man es glaube ich über das implizite arguments-Array machen. Ansonsten ist es imho in dynamischen Sprachen immer schwerer, die Verwendung zu erkennen, da die Signaturen nicht so viel aussagen, wie in getypten Sprachen.


----------



## byte (21. Feb 2010)

So siehst Du wengistens auf einen Blick, dass die Funktion überhaupt Parameter erwartet.


----------



## Spin (21. Feb 2010)

Danke für die Infos.

Habe es jetzt so gelöst:


```
<!--
// Image-Preloader
image1 = new Image();
image1.src = "thumb01.jpg";
image2 = new Image();
image2.src = "thumb02.jpg";
image3 = new Image();
image3.src = "pic03.jpg";
image4 = new Image();
image4.src = "pic04.jpg";
image5 = new Image();
image5.src = "pic05.jpg";

// swapImage
function swapImage(imgName,swapImg)
{
document.images[imgName].src=swapImg;
}

var bilder = new Array("script/thumb01.jpg","script/thumb02.jpg");
var naechstesBild = 0;  //Index des nächsten Bildes
var verzoegerung = 5000;  //Verzögerung in Millisekunden


function animation() {
		   document.pic.src = bilder[naechstesBild];
		   naechstesBild++;
		   if (naechstesBild==bilder.length) {
		      naechstesBild = 0;
		   }
		   setTimeout("animation();", verzoegerung);
		}
//-->
```

Nun habe ich zwei arrays , doch irgendwie brauche ich nur eins.

Wie kann man meinen code noch optimieren?


----------

