当前位置:首页 » 网站技术 » DHTML

DHTML幻灯片播放程序

...

这是一个幻灯片播放程序,也就是一图片轮流播放的程序。我们在一些站点上可以看见这种形式的广告播放条,大多是用CGI做的,也就是要服务器端支持CGI程序,如ASP、PHP、Perl等。但我们这里的实现方法无需CGI,用的仅是CSS的效果,再加上JavaScripts的控制。只要你的浏览器是IE 4.0以上或是Netscape 3.0以上的就可以了。只不过在这里我们用到了CSS的Filter滤镜效果,该效果只能在IE中出现。有关CSS的Filter滤镜效果,大家可以参看我的《CSS中Filter滤镜详解》,该文章在Yesky.com上已经发表。
好了,让我们来做点准备工作吧。

  首先,为了制作这个效果,我们首先要打几个尺寸一样大小的图片,让其轮流播放。比如,我找了下面三个88x31的图片做为所用的的图片。


  其次,让我们再来复习一下CSS中Filter的图片转换滤镜的知识:

CSS中的显示转换滤镜

  显示转换滤镜提供的是一种更为多变的转换效果,它不像混合转换滤镜,只提供一种淡入淡出的效果,它还提供了更多的图片转换效果,它的语法是:

Filter : RevealTrans ( duration = 转换的秒数,transition=转换类型 )

  大家可以看见,它有一个转换类型的参数,这里,它提供了24种转换类型,我们只需指定转换类型的代号,就可以让图片按特有的转换效果进行转换。下表就是24种转换滤镜的形式及其对应的代号:
显示转换滤镜的转换形式 所对应的代号 显示转换滤镜的转换形式 所对应的代号
矩形从大至小 0 随机溶解 12
矩形从小至大 1 垂直向内裂开 13
圆形从大至小 2 垂直向外裂开 14
圆形从小至大 3 水平向内裂开 15
向上推开 4 水平向外裂开 16
向下推开 5 向左下剥开 17
向右推开 6 向左上剥开 18
向左推开 7 向右下剥开 19
垂直形百叶窗 8 向右上剥开 20
水平形百叶窗 9 随机水平细纹 21
水平棋盘 10 随机垂直细纹 22
垂直棋盘 11 随机选取一种特效 23


动态转换滤镜的属性、方法和事件
属性名                   说明                                             取值 
duration         图像转换的延迟时间,最小单位是毫秒,也就是小数点后第三位。  单位是秒,取值自然数  
enabled            指定是否应用滤镜效果                        0表示不应用,非0表示就用。  
staus                  传回一个转换状态                        0表示转换停止
1表示显示应用的转换滤镜
2表示正在转换中 
方法名 说明 
Apply 将滤镜应用到对象上 
Play 开始转换 
Stop 停止转换 
事件名 说明 
OnFilterChange 当滤镜转变发生改变或是滤镜完成时所触发的事件 

  上面的CSS的转换滤镜如何被JavaScripts调用的知识我没有过多的说明,我只是列举了他的属性方法和事件。在后面,我们用Javascript来控制他的时候,我会告诉大家如何用JavaScripts使其工作的。当然这些滤镜只能在IE4.0中浏览,NetScape不支持,不过,这并不影响netscape中的显示,只不过Netscape中不会出现图片转换的效果了。

 

  下面,我要开始最为核心的部分了,就是编写javascript程序了。我们的思路是,可以定义一组图片(若干张),当页面出现时先显示第一张图片,并预载入第二张图片,第一张图片载入后5秒钟,如果第二张图片也载入了,我们就开始自动切换到第二张图片,此时并预载入第三张图片,如果5秒钟内我们载入了第三张图片,就自动切换到第三张图片,如此播放下去直到最后一张又从头开始。当然,这是自动播放的了。我们还允许用户手动进行向前和向后的播放。 

  首先,我们要解决的问题是图片的预载入,因为这决定了切换过程的流畅性和播放过程的完美性。要预载入一幅图片很简单,我们只要在内存中新建一个图片的实例变量,并把该变量指向一幅图片,这样,我们的浏览器便会自动载入这幅图片的,这就是图片的预载入。用javascript写出来就是下面这个样子: 

      var myImage = new Image()
      myImage.src = "someImage.gif" 

  然后,我们还要知道,图片是否载入了吗?如果载入了,我们就显示,如果没载入,那么就要出错了。于是我们还要改一下上面的代码,在其中加入两条语句,所以,这段JavaScript就变成下面的样子了: 

      var img = new Image() 
      img.onload = doReadyImage 
      img.onerror = doErrorDisplay 
      img.src = "someImage.gif" 

  我们加入了图片的onload和onerror事件,分别代表是否预载和预载出错的事件。这两条句语必需在img.src语句的前面。否则的话,图片预载就会出错。 

  最后就是我们的图片切换程序了,在前面,我们复习了CSS中Filter转换滤镜的各种效果,这里我们用代号为23的随机效果,下面,是我们为在IE中这种效果所写的JavaScript程序: 

if (document.images.slideShow.filters) 

  document.images.slideShow.filters[0].Stop() 
  document.images.slideShow.filters[0].Apply() 
  // 使用随机的转换效果
  document.images.slideShow.filters.revealTrans.transition=23 
}

document.images.slideShow.src = sSource 
// 开始进行转换效果的执行 
if (document.images.slideShow.filters) 
    document.images.slideShow.filters[0].Play() 

继续阅读
DHTML实现Web页面内容动态改变
使用DHTML制作网页
DHTML实现网页渐入特殊效果
用推送技术动态更新页面内容
DHTML中的“行为”组件
DHTML动态链接、鼠标击活链接
发表评论

昵称:
最新评论
暂时没有评论!