2012-10-30 62 views
0

我有什麼:

絕對定位的平面圖像在屏幕上移動和移出。爲jQuery動畫循環重新啓動絕對位置

我需要什麼:

我需要動畫循環/重新啓動每10秒即飛機剛剛出現在其默認的絕對位置在每個循環的開始。

問題:

我已經試過無數的例子,但我可以得到最接近的是使用使用.queue和.callee this例子。它循環,但需要反向動畫來重新定位圖像。相反,我需要圖像重新定位而不需要動畫。

我的代碼:

動畫開頭(並且需要爲每個循環重啓)的CSS ...

<style> 
#main_content_container{ 
width:800px; 
margin:0 auto; 
position:relative; 
height:2000px; 
} 

#sprite_plane{ 
    position:absolute; 
    left:-400px; 
    top:400px; 
    opacity:0; 
    filter:alpha(opacity=0); /* For IE8 and earlier */ 
    } 
</style> 

jQuery的動畫...

<script> 

    $("#sprite_plane").animate({ 
    opacity: 1, 
    "left": "+=430px", 
    "top": "-=530px", 
    }, 1500); 

</script> 

HTML ...

<div id="main_content_container"> 
    <img src="images/plane.png" alt="" width="120" height="120" id="sprite_plane" /> 
</div> 
+0

任何功能這個問題爲什麼被低估?我該如何改進它? –

+0

我沒有倒下你。您可以添加一個屏幕截圖或預覽您正在嘗試做什麼以及想要實現的目標嗎? –

+0

@PraveenKumar - 我已經上傳了一個演示給你(http://dominornovus.com/jq-ani-demo/index.html)。刷新頁面以重複動畫。 –

回答

2

I相信這個遞歸函數應該做你想做的

function loopAnimation(doReset) { 
    var $el = $("#sprite_plane"); 
    if (doReset) { 
     $el.css({ left: "-=430px", top: "+=530px", opacity:0 });/*assume opacity is zero at start*/ 
    } 
    $el.animate({ 
     opacity: 1, 
     "left": "+=430px", 
     "top": "-=530px", 
    }, 1500, function() { 

     setTimeout(function() { 
      loopAnimation(true); 
     }, 10000); 
    }); 
} 

在頁面初始化代碼調用:

loopAnimation(false); 

之後動畫的每個實例的完整的回調將調用內setTimeout

+0

太棒了。完美的作品,謝謝。 loopAnimation被稱爲三次。 loopAnimation(doReset)對我來說很有意義,因爲你在說如果foo存在,則會創建循環。然而我不明白你的loopAnimation函數是如何表現真假的。爲什麼初始化時需要'loopAnimation(false)'?什麼是'loopAnimation(true)'實際告訴'loopAnimation()'做什麼?真的=執行/運行嗎? –

+0

由於你的代碼使用增量定位,我不知道如果開始位置是'top:0,left:0',所以在第一次運行時,我無法將元素設置爲初始位置。因此,當你在啓動時調用函數時,我會放一個'if',它不會執行位置重置。如果您想將復位css設置爲絕對值,那麼函數中的參數和'if'可以被刪除,然後可以在第一次運行時發生復位 – charlietfl

+0

瞭解。再次感謝。 –