日期:2009-03-31  浏览次数:20870 次

<!--解读 M$ 源代码:JavaScript + CSS 实现层的平移及动态显示-->
<!--Open.htm-->
<!--本文主要由 JavaScript 和 CSS 实现的层的平移及动态显示-->
<!--小弟的 JavaScript 水平实在有够差劲,故以下注解均为个人理解,有疏漏及不当之处还请各位大虾指正-->
<!--以下源代码来源于 M$ Windows 2000 Professional 安装光盘的 DISCOVER 目录,更改之处见文档的最有注解-->

<SCRIPT language="javascript">
var StartV = 0.5;
var EndV = 1;
var MidV;
var Inc = 0.12;
var Power = 3;
/* Inc 与 Power 共同控制每循环 alpha 的变化量及循环总个数*/
var mSec = 20;
var SlStartV;
var SlEndV;
var SlInc;
var mSec;
var openSec = 20;//控制循环完成所需时间
var SlPower;


function fadeLogo() {
        if (EndV > .9999) {
            StartV = StartV + Inc;
            MidV = Math.sin(StartV) + 1;
            EndV = Math.pow(MidV,Power);
            /*个人认为采用形如“int i;i=1;i++”的方式定义 EndV,亦可达到 alpha 变化的效果,但是那样只是匀速变化,不及此处使用的具有动感罢了*/
            document.all.brandLogo.filters.alpha.opacity = document.all.brandLogo.filters.alpha.opacity + EndV ;
            document.all.Discover.filters.alpha.opacity = document.all.Discover.filters.alpha.opacity + EndV ;
            document.all.Marketing.filters.alpha.opacity = document.all.Marketing.filters.alpha.opacity + EndV;
            /*为实现 alpha 与平移的连续性,亦可在 EndV 后加一个常量,这样控制会容易一些*/
            //alert(document.all.Discover.filters.alpha.opacity);
            /*如我一般的菜鸟,可采用 alert 的方法跟踪某个变量,以达到所需的效果,只是小心不要出现死循环,到时候别骂我哦~~
            本例中跟踪了 alpha 的值,100只出现一次便是我要的效果,即 alpha 与平移的连续*/
            timer = window.setTimeout("fadeLogo();", openSec, "JavaScript");
        } else {            
            SlStartV = 0.5;
            SlEndV = 1;
            SlInc = 0.055;            
            SlPower = 4;
            mSec = 30;
            /*变量赋值,以适应下次调用的需求。
            SlInc 与 SlPower 共同控制每循环位置的变化量及循环总个数*/
            openSlide();//调用 openSlide(),平移开始。注1。
        }
}

function openSlide() {
        if (SlEndV > .9999) {
            SlStartV = SlStartV + SlInc;
            SlMidV = Math.sin(SlStartV) + 1;
            SlEndV = Math.pow(SlMidV,SlPower);
            /*跟上边一样,没什么好说的,除了我不懂 Math.pow 以外*/
  &n