Folgendes kleines PreLoad-Problem, dessen Lösung ich leider nicht im Archiv oder sonstwo finden konnte, habe ich:
Ich habe ein kleines Memory-Spiel geschrieben, dass aus über 1000 Bildern zufällig immer 20 verschiedene aussucht, die natürlich zunächst noch verdeckt sind. Offline klappt das ganz gut, aber online werden die Bilder natürlich erst geladen, wenn sie zum ersten mal aufgedeckt werden.
In einer Schleife werden alle 20 Bilder folgendermaßen vorgeladen:
preload[k] = '*url*';
preImage = new Image();
preImage.src = preload[k];Und zu Anfang liegt ein Div-Layer über dem ganzen Feld. Wie kann ich dafür sorgen, dass der Div-Layer erst dann verschwindet, wenn alle Bilder geladen sind? Einfach nach der for-Schleife auf visible setzen bringt nichts, weil zu dem Zeitpunkt die Bilder noch nicht geladen sind.
Gibt es einen Befehl, der wirklich wartet, bis das Bild im Cache ist?
Die bilder per document.write in den HTML Code schreiben und nach window.onload anfangen.
Oder du kannst den onload event auch bei den Bilder abfragen und die Bilder zählen.
In etwa so:
geladen = 0;
max_bilder = xxx;
preload[k] = '*url*';
preImage = new Image();
preImage.onload = function() { geladen++; if(geladen == anzahl_max_bilder) alert('fertig'); }
preImage.src = preload[k];
Struppi.