2010-07-16 17 views
6

...Görüntü değişimi her 30 saniye - 30 saniye sonra bir görüntü değişikliği yapmak istiyorum döngü

kod böyle görünüyor kullanıyorum:

Senaryo:

var images = new Array() 
images[0] = "image1.jpg"; 
images[1] = "image2.jpg"; 
images[2] = "image3.jpg"; 
setTimeout("changeImage()", 30000); 
var x=0; 

function changeImage() 
{ 
document.getElementById("img").src=images[x] 
x++; 
} 

Ve vücut: bunu henüz test etmedim Şimdi

<img id="img" src="startpicture.jpg"> 

ama hesaplarım doğruysa eğer çalışacaktır :)

Şimdi istediğim, "solma geçişi" yapmak ve görüntülerin değişmesini döngü yapmak istiyorum (tüm resimler gösterildikten sonra yeniden başlatılıyor). Sizden herhangi birini nasıl yapacağınızı biliyor musunuz? Ben geçmişte bu jQuery eklentisi kullandım

+1

'setTimeout' sadece bir kez çağırır; setInterval'ı arıyorsun. Ayrıca çalıştırılacak kod, bir işlev değil, bir işlev referansı olmalıdır. bu yüzden var timerid = setInterval (changeImage, 30000); – lincolnk

+0

kesinlikle bu konuda haklısınız! –

cevap

12

Bunun gibi şeyler için çerçeveler kullanmayı kabul ediyorum, sadece daha kolay olduğu için. Bunu gerçekten hızlı bir şekilde hackledim, sadece bir görüntüyü susturacağım ve daha sonra anahtarlar da IE'nin eski sürümlerinde çalışmayacak. Ancak gerçek solgunluğun kodunu görebileceğiniz gibi KARASZI István tarafından yayınlanan JQuery uygulamasından çok daha uzun.

function changeImage() 
{ 
    var img = document.getElementById("img"); 
    img.src = images[x]; 
    x++; 

    if(x >= images.length){ 
     x = 0; 
    } 

    fadeImg(img, 100, true); 
    setTimeout("changeImage()", 30000); 
} 

function fadeImg(el, val, fade){ 
    if(fade === true){ 
     val--; 
    }else{ 
     val ++; 
    } 

    if(val > 0 && val < 100){ 
     el.style.opacity = val/100; 
     setTimeout(function(){fadeImg(el, val, fade);}, 10); 
    } 
} 

var images = [], 
x = 0; 

images[0] = "image1.jpg"; 
images[1] = "image2.jpg"; 
images[2] = "image3.jpg"; 
setTimeout("changeImage()", 30000); 
+0

Teşekkürler, gerçekten güzel! – Latze

+2

Kodunuzu geliştirebilir ve birkaç basit alternatif kullanarak yerden tasarruf edebilirsiniz: '' 'x = (x + 1)% images.length;' ',' 'val = val + (fade? -1: 1); '' '' '' var görüntüler = ["image1.jpg", "image2.jpg", "image3.jpg"]; '' '. – eriksensei

5

:) yok:

CrossSlide

Büyük çalıştı ve tam olarak ne istediğinizi yapar.

+0

Güzel bir, bu! Efektleri aramıyordum, ama şimdi Kern Burns etkisini de yapabileceğime karar verdim! Kısmen sadece küçük bir dosya olması ve zaten diğer komut dosyaları için jquery kullanması. Teşekkürler! –

+0

"from" ve "to" özelliğini anlamakta başarılı değilim. Lütfen yardım edin? – user1932595

+0

Özellikler/özellikleri, animasyonun başlangıç ​​ve bitiş konumunu kontrol eder (CSS arka plan konumuna benzer). Bu yüzden: 'sol üstte' ve 'yerine:' sağ altta 'görüntü sol üstte başlayıp alt sağa kaydırılacaktır. https://github.com/tobia/CrossSlide/blob/master/:/çıkış tavada sırasında yakınlaştırmak için görüntüyü neden olacaktır Sonunda ekleyebileceğiniz bir yakınlaştırma faktörü (örn '1.5x') de var HOWTO.md – Pat

1

innerfade'a bir göz atın. Here's an example nerede olduğunuzu tam olarak yapmak için kullandım, sanırım.

Çeşitli javascript kütüphanelerde bir göz atmalısınız
7

, onlar size yardım etmek gerekir:

tümü Onların öğreticiler var ve kaybolur/fade out ab asic kullanımı.

Örneğin; jQuery:

var $img = $("img"), i = 0, speed = 200; 
window.setInterval(function() { 
    $img.fadeOut(speed, function() { 
    $img.attr("src", images[(++i % images.length)]); 
    $img.fadeIn(speed); 
    }); 
}, 30000); 
0

setInterval işlevi, kullanılması gereken özelliktir. İşte herhangi bir fantezi solma seçeneği olmadan aynı bir örnek. Bir görüntüyü her 30 saniyede bir değiştiren basit Javascript. Resimlerin ayrı bir görüntü klasöründe tutulduğunu ve dolayısıyla her görüntünün başında _images/var olduğunu varsaydım. Ayarlanması gereken şekilde kendi yolunuza sahip olabilirsiniz.

KODU:

var im = document.getElementById("img"); 

var images = ["_images/image1.jpg","_images/image2.jpg","_images/image3.jpg"]; 
var index=0; 

function changeImage() 
{ 
    im.setAttribute("src", images[index]); 
    index++; 
    if(index >= images.length) 
    { 
    index=0; 
    } 
} 

setInterval(changeImage, 30000); 
0

Sadece That.Its Kolay kullanın.

<script language="javascript" type="text/javascript"> 
    var images = new Array() 
    images[0] = "img1.jpg"; 
    images[1] = "img2.jpg"; 
    images[2] = "img3.jpg"; 
    setInterval("changeImage()", 30000); 
    var x=0; 

    function changeImage() 
    { 
       document.getElementById("img").src=images[x] 
       x++; 
       if (images.length == x) 
       { 
        x = 0; 
       } 
    } 
</script> 

Ve Beden bu kod yaz

: -

<img id="img" src="imgstart.jpg"> 
İlgili konular