N'abend, Martina,
Die scripts von kurt grigg sind oft sehr hübsch, allerdings
ist das zur Debatte stehende leider so geschrieben, daß lediglich
der ie es in ner annehmbaren Geschwindigkeit ablaufen läßt.
Man kann soetwas auch so schreiben, daß auch andre browser damit
zurechtkommen, der ns7 und auch mozFirebird können durchaus
schneller sein als der ie (ns7 sogar wesentlich schneller).
In opera7.11 läuft es zwar, aber vergleichsweise schneckenartig.
(Das sind natürlich relative Betrachtungen).
So, wie's momentan ist, siehst Du allerdings in mozFirebird und ns7.02
bloß ne Fehlermeldung:
'Error: document.getElementById("pics0") has no properties
Source File: file:///C:/selber/fundst%FCcke/grigg_multi_random_2.htm
Line: 94'
Um die zu beseitigen, packst Du die beiden Zeilen:
Curve();
MoveRandom();
in einen onload-Aufruf:
onload = function()
{Curve();
MoveRandom();
};
Doch nun zu Deiner Idee, die bilder durch animierte solche zu ersetzen:
Du kannst die onload-function dahingehend erweitern, daß Du parallel zu
Array Pic ein Array PicExpl einführst, in dem jedem bild ein
korrespondierendes 'Explonat' zugeordnet wird, wobei bei einem click (bzw.
praktischerweise ein mousedown) auf ein bild dessen src ausgetauscht wird:
onload = function()
{Curve();
MoveRandom();
PicExpl = new Array('1a_expl.gif','2a_expl.gif','3a_expl.gif','4a_expl.gif','5a_expl.gif','6a_expl.gif',
'7a_expl.gif','1a_expl.gif','3a_expl.gif','4a_expl.gif','5a_expl.gif','6a_expl.gif','7a_expl.gif')
for( var i = 0, di, dl; i < (dl = (di = document.images).length); i++)
{di.i = new Image();
di.i.src = PicExpl;
di.onmousedown = function(){this.src = this.i.src};
};
};
Und damit, wenn alle explodiert sind, das Timeout stopt, gibst Du dem Timeout einen Namen,
also statt nur:
setTimeout('MoveRandom()',10);
sagst Du:
stMR = setTimeout('MoveRandom()',10);
Letztendlich könnte die function onload dann so aussehen:
onload = function()
{Curve();
MoveRandom();
var stMRz = 0;
PicExpl = new Array('1a_expl.gif','2a_expl.gif','3a_expl.gif','4a_expl.gif','5a_expl.gif','6a_expl.gif',
'7a_expl.gif','1a_expl.gif','3a_expl.gif','4a_expl.gif','5a_expl.gif','6a_expl.gif','7a_expl.gif')
for( var i = 0, di, dl; i < (dl = (di = document.images).length); i++)
{di.i = new Image();
di.i.src = PicExpl;
di.onmousedown = function()
{this.src = this.i.src;
if(++stMRz == dl) clearTimeout(stMR);
};
};
};
Diese Lösung ist vielleicht für Dich am ehesten gangbar, wenn Du nicht allzuviel
mit javascript am Hut hast.
Und wie gesagt, schau Dir in den verschiedenen browsern mal die Unterschiede
der Schnelligkeit an.
gruß
werndt