2010-03-30 197 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 /等更接近。程序员倾向于期待。