hallo..
vorweg möchte ich sagen das ich ein anfänger im programmieren bin..
ich habe mich mal daran versucht eine slideshow zu bauen in der jedes bild erst einfadet dann ausfadet und schliesslich wechselt.
ich wollte es so lösen das ich meine zu slidenden bilder in ein array speichere und dieses mit einer for each schleife durchlaufe.
Bei jedem durchlauf soll das gegenwärtig gelieferte objekt an eine funktion fadeIn() und danach an eine funktion fadeOut() übergeben werden die dann jeweils entweder den opacity wert des bildes mit hilfe der setInterval() Funktion inkremen- bzw. dekrementiert.
Dabei stiess ich also auf folgendes problem: bei jedem schleifendurchlauf finden die funktionsaufrufe von fadeIn() und fadeOut() unmittelbar statt ohne das beide funktionen jeweils komplett ausgeführt wurden... ehe fadeIn() überhaupt fertig ist beginnt schon fadeOut() mit der arbeit...
schliesslich habe ich versucht fadeIn() und fadeOut() neben dem zu fadenden Objekt als Parameter auch noch ein callback zu übergeben welchem ich bei fadeIn() als callback gleich noch fadeOut() übergeben habe... das funktioniert auch..
die for each schleife wartet trotzdem nicht sondern startet einfach schnell die funktion und rattert bis zum ende durch...
wüsste jemand einen lösungsansatz für meine methode? eine möglichkeit das die for each schleife bis zum nächsten durchlauf so lange wartet bis fadeIn() und fadeOut() wirklich fertig sind
hier der code: (init() ist an das onload-event gebunden)
vorweg möchte ich sagen das ich ein anfänger im programmieren bin..
ich habe mich mal daran versucht eine slideshow zu bauen in der jedes bild erst einfadet dann ausfadet und schliesslich wechselt.
ich wollte es so lösen das ich meine zu slidenden bilder in ein array speichere und dieses mit einer for each schleife durchlaufe.
Bei jedem durchlauf soll das gegenwärtig gelieferte objekt an eine funktion fadeIn() und danach an eine funktion fadeOut() übergeben werden die dann jeweils entweder den opacity wert des bildes mit hilfe der setInterval() Funktion inkremen- bzw. dekrementiert.
Dabei stiess ich also auf folgendes problem: bei jedem schleifendurchlauf finden die funktionsaufrufe von fadeIn() und fadeOut() unmittelbar statt ohne das beide funktionen jeweils komplett ausgeführt wurden... ehe fadeIn() überhaupt fertig ist beginnt schon fadeOut() mit der arbeit...
schliesslich habe ich versucht fadeIn() und fadeOut() neben dem zu fadenden Objekt als Parameter auch noch ein callback zu übergeben welchem ich bei fadeIn() als callback gleich noch fadeOut() übergeben habe... das funktioniert auch..
die for each schleife wartet trotzdem nicht sondern startet einfach schnell die funktion und rattert bis zum ende durch...
wüsste jemand einen lösungsansatz für meine methode? eine möglichkeit das die for each schleife bis zum nächsten durchlauf so lange wartet bis fadeIn() und fadeOut() wirklich fertig sind
hier der code: (init() ist an das onload-event gebunden)
HTML:
var images;
function init(){
images = new Array();
var pic1 = new Image();
pic1.src = "http://www.tutorials.de/forum/images/pic1.jpg";
var pic2 = new Image();
pic2.src = "http://www.tutorials.de/forum/images/pic2.jpg";
var pic3 = new Image();
pic3.src = "http://www.tutorials.de/forum/images/pic3.jpg";
images.push(pic1);
images.push(pic2);
images.push(pic3);
for each(var tmp in images){
document.getElementById("images").appendChild(tmp);
fadeIn(tmp, function(){
fadeOut(tmp, function(){
});
});
}
}
function fadeIn(element, callback){
var i = 0;
var timer = setInterval(function(){
if(i < 1){
i += 0.05;
element.style.opacity = i;
}
else{
clearInterval(timer);
callback();
}
}, 50);
}
function fadeOut(element, callback){
var i = 1.0;
var timer = setInterval(function(){
if(i > 0){
i -= 0.05;
element.style.opacity = i;
}
else{
clearInterval(timer);
callback();
}
}, 50);
}
Zuletzt bearbeitet: