2012-05-03 22 views
0

このコードを交互に2枚の画像、及びそれが動作します:jQueryのクロスフェード画像無限に無限

<img src="../images/opisSlike/nagrada2a.jpg" class = "nag2altImg" alt=""/> 
<img src="../images/opisSlike/nagrada2b.jpg" class = "nag2altImg2" alt=""/> 
//second image starts with opacity 0 

<script type="text/javascript"> 

function myAnimate(){ 

    $('img.nag2altImg').delay(2500).animate({"opacity": "0"}, 1500); 
    $('img.nag2altImg').delay(2500).animate({"opacity": "1"}, 1500);   

    $('img.nag2altImg2').delay(2500).animate({"opacity": "1"}, 1500); 
    $('img.nag2altImg2').delay(2500).animate({"opacity": "0"}, 1500);  

    // this animation lasts for 8 seconds: 2500 delay + 1500 animation + 2500 delay + 1500 animation 
} 

$(document).ready(myAnimate()); 
$(document).ready(setInterval(function() {myAnimate()}, 8000)); 

</script> 

しかし、私は思っていたので、そのようなものを作るために、と言って、よりエレガントな方法はありますか?

+0

これが問題であるかどうかはわからないが、私は、ページの読み込み上の単一の火災イベントとして、それを設定し、設定したいですアニメーションが終了した後の新しい間隔。それは潜在的に厄介な並行処理の問題を避けるべきです。 – asawyer

答えて

0

タイマーを使用してください。それをグローバルにする。すべてのアニメーションを1つのタイマーに基づいて作成します。アニメーションを手作業でコーディングし、jQueryを遅くしておくと、複数のアニメーションを同時に実行することに問題があります。すべてのものをカスタムライブラリにラップします。フロントエンドから電話をかけてください。

+2

Downvoterは共有する気に?これはGoogleがそれを行う方法です。 –

1
function myAnimate(){ 

     $('img.nag2altImg').delay(2500).animate({"opacity": "0"}, 1500); 
     $('img.nag2altImg').delay(2500).animate({"opacity": "1"}, 1500);   

     $('img.nag2altImg2').delay(2500).animate({"opacity": "1"}, 1500); 
     $('img.nag2altImg2').delay(2500).animate({"opacity": "0"}, 1500);   

     // this animation lasts for 8 seconds: 2500 delay + 1500 animation + 2500 delay + 1500 animation 
     // run forever. 
     myAnimate(); 
    } 

$(document).ready(myAnimate()); 

これは、よりよい解決策のようになります。

function myAnimate() { 
    $('img.nag2altImg2').animate({ 
     opacity: 1.0 
    }, { 
     duration: 1500 
    }).animate({ 
     opacity: 0 
    }, { 
     duration: 1500 
    }).animate({ 
     opacity: 1.0 
    }, { 
     duration: 1500, 
     complete: myAnimate 
    }) 
} 
$(document).ready(myAnimate()); 
+0

このコードはWebブラウザをフリーズします – GTCrais

+0

これは一般的な考えですが、私はDementicがアニメーションが非同期であることを忘れてしまったと思います。 – asawyer