Bilder zoomen -> Bilder flackern
niko
- javascript
Hallo an alle!
Ich versuche gerade eine Gallerie mit Javascript zu erstellen. Mit Flash wäre das Unterfangen wahrscheinlich wesentlich einfacher aber ich möchte mich im Moment mehr mit Javascript befassen. Die Galerie soll etwas besser aussehen, deshalb hab ich so ne Art Zoomfunktion eingebaut.
Das Problem: wenn man zwischen den Bildern schnell "rumschwirrt" beginnen diese zu flackern / zittern.
Dachte zuerst, das läge daran, dass sich alle Bilder auf die selbe Größenvariable beziehen und habe deshalb einen Array bereitgestellt der die Größen für die einzelnen Bilder enthält, aber der hat auch nicht geholfen...
Den Javacode gibts hier: http://buehne-im-stall.de/scripts/galerie.js
und die Seite kann man hier betrachten:
http://buehne-im-stall.de/galerie_v2.html
Wäre schön wenn mir jemand helfen kann :)
MFG
Nikolas
Hallo an alle!
Ich versuche gerade eine Gallerie mit Javascript zu erstellen.
Leider fehlen trotzdem einige wichtige Zeilen Code. Es scheint aber ungeachtet dessen so zu sein, daß sämtliche 'Zeitschleifen', die Du für das Zoomen verwendest, nie beendet werden, immer weiterlaufen und sich dann 'überlagern'. Das ist schon daran zu erkennen, daß die Bilder zucken, wenn man nur irgendwie den Mauszeiger bewegt, ein untrügliches Zeichen dafür, daß da viele Prozesse gleichzeitig laufen und auf Rechenzeit warten...
Hi,
ein untrügliches Zeichen dafür, daß da viele Prozesse gleichzeitig laufen und auf Rechenzeit warten...
Ich bin nicht sehr fit in Javascript, aber wie Klawischnigg schon meinte, denke ich auch, daß sich die Timeouts überlagern.
Da könntest du probieren, in der letzten Iteration der jweiligen Funktion, sämtliche noch gesetzte Timeouts zu löschen:
function zoom_in/zoom_out(...){
if(...){
...;
}else{
...;
setTimeout("clearAllTimeouts()",0);
}
}
function clearAllTimeouts(){
/*var debug="";*/
for(key in timeOuts ){
/*debug += key + " => " + timeOuts[key]+" | ";*/
clearTimeout(timeOuts[key]);
}
timeOuts = new Array();
/*alert(debug);*/
}
herzliche Grüße,
Jonny 5
Ooops :D
Da könntest du probieren, in der letzten Iteration der jweiligen Funktion, sämtliche noch gesetzte Timeouts zu löschen:
}else{
...;
setTimeout("clearAllTimeouts()",0);
}
}
Natürlich muß die entsprechende Variable auch gefüllt / initialisiert werden:
timeOuts=new Array();
.
.
.
function zoom_in/zoom_out(...){
if(...){
...;
timeOuts.push(setTimeout("zoom_in/zoom_out('"+ id +"')",0));
}else{
...;
setTimeout("clearAllTimeouts()",0);
}
}
herzliche Grüße,
Jonny 5
Ok, danke euch allen, werd das die Tage mal ausprobieren und dann nochmal schreiben!