网页制作基础概念    Flash动画制作    Javascript实例    Photoshop网页图片实例    GIF动画制作

网站网页制作技巧

  返回目录
 

在网页中用Wave滤镜实现水波动画效果

青海医学院计算中心 郭俊岭 (810001)

一 Wave 滤镜简介
   Wave 是层叠样式单(Cascading Style Sheet,缩写为CSS) 提供的滤镜之一,进行垂直方向的正弦变换。Wave 滤镜在STYLE 中的引用格式是:filter:wave(add=< add >, freq=< freq >, lightStrenth=< LightStrength >, phase=< phase >, strength=< strength >),其中,五个参数的意义分别如下:
   < add > 取0 或1,add=1 表示在变换的波形上加入原形,add=0 不加入;
   < freq > 的值确定Wave 滤镜产生的正弦波的数目,一个正弦波是指一个最小正周期的波形;
   < lightStrength > 表示正弦变换后的明暗程度,数值越大越暗;
   < phase > 是正弦波的初位相,既不以角度为单位,也不以弧度,而是用100 表示一个最小正周期, 相当于360 度;
   < strength > 表示变换强度,其实就是正弦波的振幅,以象素为单位;
   例如,Wave 滤镜可以如下形式使用:
STYLE="filter:wave(add=0,freq=1,
lightStrength=50,phase=25,strength=50)"
   该滤镜产生1 个正弦波形,初相位90 度,振幅为50 象素,不加入原图象,光照明暗程度为50。
   在IE 4.0 下运行下面的DHTML 程序(Wave.html),你会看到图一所示的正弦波变换效果。如果采用上面例句中的样式,则会产生图二的效果。对比两图,对各个参数的意义可知一二。
< !-- Wave.html -- >
< HTML >
< HEAD >
< TITLE >Wave Filter< /TITLE >
< /HEAD >
< BODY >
< CENTER >
< H1 > 城市夜景< /H1 >< HR >
< IMG SRC="city.gif" WIDTH=200
STYLE="filter:wave(add=1,freq=2,
lightStrength=10,phase=50,strength=100)" >
< !-- 该滤镜产生2个正弦波形,初相位180度,
振幅为100象素,加入原图象,光照明暗程度为10。-- >
< /CENTER >
< /BODY >
< /HTML >
   二 用Wave 滤镜实现水波动画效果
   尽管Wave 是一个静态滤镜,但是,结合定时器,用脚本语言,在定时器触发时,改变Wave 的参数,就可以产生很好的水波动画效果。整个工作分4 步进行。
   1. 为IMG 元素设置Wave 滤镜
   建立一个IMG 元素,指定ID 以备脚本调用,用SRC 指定图象,用STYLE 中的filter:wave 设置Wave 滤镜(加入原图象,全图5 个正弦波,初相位0,振幅为10 个象素,光照强度参数为20):
< IMG ID=imgTrees
STYLE="filter:wave(add=1,freq=5,
lightstrength=20,phase=0,strength=10)"
SRC="Trees.bmp" >
   2. 使用setInterval 定时
   setInterval 是window 对象的一个方法,其功能是每隔指定时间间隔,调用指定的定时器过程,使用的格式是:window.setInterval(" 定时器过程",< 时间间隔 >),其中,时间间隔的单位是毫秒。
   例如:glbTimer=window.setInterval("WaveChange",150),就是每隔150 毫秒,调用一次WaveChange 过程。
   清除由setInterval 设置的定时器,使用window.clearInterval 方法。如要清除由上例设置的定时器glbTimer,使用window.clearInterval(glbTimer)。
   3. 在脚本中访问Wave 滤镜属性
   在脚本中,用imgTrees.filters.wave 访问所设的Wave 滤镜,下面的VBScript 语句分别访问Wave 滤镜的phase,strength 和Enabled 属性:
imgTrees.filters.Wave.Phase=glbPhase    ''''设置初位相
imgTrees.filters.Wave.Strength=glbStrength ''''设置正弦波的振幅
imgTrees.filters.Wave.Enabled=0 ''''取消Wave滤镜效果
   4. 用VBScript 编写脚本
   脚本由VBScript 写成,有两个过程。一个是WaveChange(),作为定时器过程,通过对有关属性的赋值,动态改变Wave 滤镜,产生水波动画效果。另一个是document_onClick(),在单击文档时,清除定时器,并使Wave 滤镜无效。定时器在文档装入时设置,脚本中的三个变量也是在此时建立的。详情请见下面的DHTML 程序。
   三. DHTML 程序
   下面的程序在调入浏览器之后,网页出现了树影婆娑的水波动画效果( 图三)。单击文档,解除定时器,终止Wave 滤镜的作用,恢复原图。
< !--
    在网页中用Wave滤镜实现水波动画效果.html
-- >
< HTML >
< HEAD >
< !-- 定义H1标题样式    -- >
< STYLE TYPE="text/css" >
    H1{
    font-size:32pt;
    font-style:italic;
    font-weight:bold;
    font-family:黑体;
    text-align:center;
    text-decoration:underline;
    color:gold}
< /STYLE >
< SCRIPT LANGUAGE=VBScript >
Option Explicit
dim glbPhase
dim glbStrength
dim glbTimer
Sub waveChange()
if glbStrength=60 then
glbPhase=0
    glbStrength=6
else
glbPhase=glbPhase+5
    glbStrength=glbStrength+1
End if
''''设置Phase和Strength属性的新值
imgTrees.filters.Wave.Phase=glbPhase
imgTrees.filters.Wave.Strength=glbStrength
End Sub
Sub document_onClick
clearInterval(glbTimer)    ''''解除定时
imgTrees.filters.Wave.Enabled=0    ''''使Wave滤镜无效
End Sub
''''设置定时器glbTimer,时间间隔为150毫秒
glbTimer=window.setInterval("waveChange",150)
< /SCRIPT >
< TITLE >在网页中用Wave滤镜实现水波动画效果< /TITLE >
< /HEAD >
< BODY >
< CENTER >
< H1 >树影婆娑< /H1 >
< IMG ID=imgTrees
STYLE="filter:wave(add=1,freq=5,
lightstrength=20,phase=0,strength=10)"
SRC="Trees.bmp" >
< P STYLE="color:red" >
Wave滤镜与setInterval联合使用产生的水波动画效果。< BR >
单击文档,清除定时器,图象复原。< /P >
< /CENTER >
< /BODY >
< /HTML >
  本文的DHTML 程序在中文Windows 97 和中文IE 4.0 下运行通过。

文章版权或来源:微电脑世界

Copyright 2000-02 © 企改探索 All rights reserved.大希个人主页版权所有 本站由成都市金牛区体改委刘达希 编辑制作
Chengdu city. Suchuan province. The People's  Republic of  China