2010-03-30 94 views
0

我看到很多人爲此而苦苦掙扎(包括我在內)。我想這主要是由於不完全知道Javascript範圍如何工作。Jquery中的連續動畫

圖像幻燈片就是一個很好的例子。所以可以說你有一系列的圖像,第一個淡入=>等待=>淡出=>下一張圖像。

當我第一次創建這個時,我已經有點迷路了。我認爲創建基礎的最大問題是保持清潔。我注意到使用回調的工作可能會非常快。

因此,爲了使它更復雜,大多數幻燈片都有控制按鈕。接下來,以前,去IMG公司暫停,...

我一直想這個現在一段時間,這是我的了:

$(InitSlideshow); 

function InitSlideshow() { 
    var img = $("img").hide(); 

    var animate = { 
     wait: undefined, 
     start: function() { 
      img.fadeIn(function() { 
       animate.middle(); 
      }); 
     }, 

     middle: function() { 
      animate.wait = setTimeout(function() { 
       animate.end(); 
      }, 1000); 
     }, 

     end: function() { 
      img.fadeOut(function() { 
       animate.start(); 
      }); 
     }, 

     stop: function() { 
      img.stop(); 
      clearTimeout(animate.wait); 
     } 
    }; 

    $("#btStart").click(animate.start); 
    $("#btStop").click(animate.stop); 

}; 

此代碼的工作(我認爲),但我想知道其他人如何處理Jquery中的序列動畫?提示和技巧是最受歡迎的。那麼,處理這個問題的好資源的鏈接。

如果在刪除此問題之前已詢問此問題。我沒有找到關於這個馬上的很多信息。我希望使這個社區wiki是正確的,因爲我的問題沒有一個正確的答案。

親切的問候,

Pickels

+0

這是一個奇怪或愚蠢的問題?有人對如何改善這個問題有了一些想法? – Pickels 2010-03-31 10:54:48

回答

1

我想這主要是由於不完全知道如何使用Javascript作用域的工作。

JavaScript範圍是功能級別,而不是塊級別。就這麼簡單。如果您在函數的任何位置聲明使用var的變量,則在該函數內的任何位置都可以看到該變量。

使用Javascript 1.7(提示:IE甚至不支持遠程支持),您可以使用let關鍵字而不是var關鍵字來聲明塊範圍變量。這與Java/C /等更接近。程序員傾向於期待。