Preloader vereinfachen
Nico
- javascript
Hallo,
hab auf einer Linkseite viele mouseoverbilder und will die alle vorladen lassen. hab dazu auch ein script gefunden das funktioniert auch einwandfrei (zumindest so weit, wie ich es gemacht habe), aber kann man das auch so machen, dass sich einfach der ganze array pictures in die Schleife integriert wird? so dass man nicht jedes Bild einzeln eingeben muss? das sind nähmlich ein haufen! nicht das ich zu faul wäre es zu schreiben, aber verstehen würde ich es gerne.
<script type="text/javascript">
<!--
var pictures = new Array();
pictures[0] = "aod_banner.jpg";
pictures[1] = "doomstone.jpg";
pictures[2] = "dream_gallarie.jpg";
pictures[3] = "hellmasters.jpg";
pictures[4] = "infinight.gif";
pictures[5] = "LCN.jpg";
pictures[6] = "Ra_s_Dawn.jpg";
...
function show(id){
document.getElementById("meinbild").src = 'bilder/link_bilder/' + pictures[id];
var myimages=new Array()
function preloadimages(){
for (i=0;i<preloadimages.arguments.length;i++){
myimages[i]=new Image()
myimages[i].src= 'bilder/link_bilder/' + preloadimages.arguments[i]
}
}
preloadimages("aod_banner.jpg","doomstone.jpg","dream_gallarie.jpg","hellmasters.jpg","infinight.gif","LCN.jpg")
danke für Hilfe + Erklärung,
Nico
Hallo, Nico!
kann man das auch so machen, dass sich einfach der ganze array pictures in die Schleife integriert wird? so dass man nicht jedes Bild einzeln eingeben muss?
was willst du da noch vereinfachen?
die einzige, mögliche vereinfachung wäre es, deine bilder fortlaufend zu nummerieren und dann das array einfach per schleife mit angegebener gesamtzahl der bilder zu füllen.
dann musst du aber andererseits alle bilder sinnvoll umbenennen.
javascript ist jedenfalls nicht in der lage, deinen bilderordner auszulesen und selber ein array daraus zu bilden.
freundl. Grüsse aus Berlin, Raik
Hallo, Nico!
Hallo, Raik
was willst du da noch vereinfachen?
die einzige, mögliche vereinfachung wäre es, deine bilder fortlaufend zu nummerieren und dann das array einfach per schleife mit angegebener gesamtzahl der bilder zu füllen.
dann musst du aber andererseits alle bilder sinnvoll umbenennen.
javascript ist jedenfalls nicht in der lage, deinen bilderordner auszulesen und selber ein array daraus zu bilden.
den array gibt's ja schon (pictures). würde ja gerne den ganzen array vom Preloader in den cache schreiben lassen.
hab mich warscheinlich etwas undurchsichtig ausgedrückt.
aber Du hast recht, genau das will ich ja machen. Wahrscheinlich meinen wir das gleiche.
diesmal etwas anschaulicher:
<html>
<head>
<script type="text/javascript">
<!--
var pictures = new Array();
pictures[0] = "aod_banner.jpg";
pictures[1] = "doomstone.jpg";
pictures[2] = "dream_gallarie.jpg";
pictures[3] = "hellmasters.jpg";
pictures[4] = "infinight.gif";
pictures[5] = "LCN.jpg";
pictures[6] = "Ra_s_Dawn.jpg";
pictures[7] = "somewhere_in_nowhere.gif";
pictures[8] = "Dunkler_Poet.jpg";
pictures[9] = "reptured_silence.gif";
pictures[10] = "WORLDSENDstudio_neu.gif";
...
diesen array hab ich schon, mit insgesamt noch 46 weiternen bildern. das ist auch schon ganz geschrieben. die benutze ich im html dokument auch schon für die rollover bilder, mit diesem javascript befehl:
function show(id){
document.getElementById("meinbild").src = 'bilder/link_bilder/' + pictures[id];
}
und solchen links im body:
<a href="http://www.ageofdistrust.de" onmouseover="show('0')" onmouseout="show('11')" target="_blank">Age of distrust</a><br/>
<a href="http://www.doomstone.de" onmouseover="show('1')" onmouseout="show('11')" target="_blank">Doomstone</a><br/>
...
usw. für den rest der bilder.
das klappt auch alles wunderbar. dann wollte ich nur diese bilder alle preloaden, kann aber javascript zwar einigermaßen anpassen an das was ich brauche, aber das hier nicht. denn das script was ich geladen habe,:
/*
Preload images script
By SupremeScripts (http://www.SupremeScripts.com)
*/
var myimages=new Array()
function preloadimages(){
for (i=0;i<preloadimages.arguments.length;i++){
myimages[i]=new Image()
myimages[i].src= 'bilder/link_bilder/' + preloadimages.arguments[i]
}
}
// geben Sie hier die Bilder und deren Pfade (URL) ein
preloadimages("aod_banner.jpg","doomstone.jpg","dream_gallarie.jpg","hellmasters.jpg","infinight.gif","LCN.jpg")
funktioniert zwar super, aber hier muss ich nochmal alle bilder eingeben. hab es zwar schon hinbekommen, den Pfad (bilder/link_bilder/) schon vorher in die source reinzuschreiben, um sie nicht bei jedem bild schreiben muss, aber wenn ein bild sich ändert, muss ich es oben im arry "pictures", in "preloadimiges" und im body ändern. also warum sich arbeit machen, wenn der computer das viel schneller und fehlerfreier kann.
hoffentlich beschreibt diese etwas ausführlichere ausführung eher die situation.
cu,
Nico
hallö,
mal n paar allgemeine dinge: wenn ich du wäre, würde ich mich noch etwas mehr mit den fähigkeiten von JavaScript, insbesondere arrays, befassen. außerdem allgemeine notationsregeln besser beachten (semikolon am befehlsende etc.) und mich für eine vereinheitlichte schreibweise (weite der einrückung, lehrzeichen) entscheiden. dann kann mann/frau/du/ich problemen schneller auf die schliche kommen...
du verwendest im grunde genommen zwei scripte, die das gleiche tun. ich hab eine abgespeckte version gebastelt. das könnte dir sogar die änderungen der img-tags abnehmen. davon würde ich aber eher abraten.
<script language="JavaScript" type="text/javascript">
<!--
//bilder definieren
var pictures = new Array(
"aod_banner.jpg",
"doomstone.jpg",
"dream_gallarie.jpg",
"hellmasters.jpg",
"infinight.gif", //ich würde hier ausschließlich ein format verwenden, dann kannst du die endung weiter unten anhängen.
"LCN.jpg"
);
//solange du nicht vorhast, die fortlaufende nummerierung zu unterbrechen, erspart diese schreibweise die aufzählung der elemente mit pictures[...] - das wäre immerhin auch code, der geladen werden muss.
function show(id) { //die funktion sollte aus taktischen gründen _vor_ den vorzuladenden bildern stehen.
document.getElementById("meinbild").src="Bilder/"+pictures[id];
img_title=pictures[id].slice(0,pictures[id].length-4); //schneidet die dateiendung ab (kein muss!)
document.getElementById("meinbild").setAttribute("title","Mein Bild: "+img_title); //fügt einen title-tag hinzu (kein muss!)
}
var myimages=new Array();
for(var i=0;i<pictures.length;i++) { //das 'var i' ist notwendig, um die variable in der funktion zu definieren.
myimages[i]=new Image();
myimages[i].src="Bilder/"+pictures[i];
}
//das array wird automatisch (ohne funktionsaufruf) durchlaufen.
//-->
</script>
hiermit könntest du dir anzeigen lassen, was vorgeladen wird:
<script language="JavaScript" type="text/javascript">
<!--
document.write("<dl>vorgeladen werden: ");
for(var i=0;i<myimages.length;i++)
{
document.write("<dt>"+myimages[i].src+"</dt><dd><img src=""+myimages[i].src+"" alt=""></dd>");
//beachte die maskierten hochkommata statt "'"!
}
document.write("</dl>");
//-->
</script>
grüße aus Leipzig
willie alias adlerauge ;-)
harrharr,
(weite der einrückung, lehrzeichen)
sehr leerreich ;-)..........^
wie war das mit der rechtschreibprüfung?
willie