javascript动画效果类封装代码

 更新时间:2007年08月28日 20:22:10   作者:  
<input id=output3 style="position:absolute;top:300;left:300;"/>
<input id=output1 />
<input id=output2 />
<br/>
<input id=output4 />

<script>
function Animation(target,targetProperty,closure,precision)
{
  closure=closure||function(x){return x;};
  precision=precision||10;
  this.handle;

  var beginTime=new Date();
  var stopTime=new Date();
  this.Begin=function(){
    beginTime=new Date();
    this.handle=setInterval(
      function(){
        var now=new Date();
        target[targetProperty]=closure(now.getTime()-beginTime.getTime());
      },
      precision
    );
       }

  this.Continue=function(){
    var now=new Date();
    beginTime.setTime(now.getTime()-stopTime.getTime()+beginTime.getTime());

    this.handle=setInterval(
      function(){
        var now=new Date();
        target[targetProperty]=closure(now.getTime()-beginTime.getTime());
      },
      precision
    );
  }

  this.Stop=function(duration){

    clearInterval(this.handle);

    if(duration===undefined)
    {
      stopTime=new Date();
      duration=stopTime.getTime()-beginTime.getTime();
    }
    else stopTime.setTime(beginTime.getTime()+duration)
    target[targetProperty]=closure(duration);
  }
}

function StoryBoard(Duration,onfinish,flag)
{
  onfinish=onfinish||function(){};
  var r=new Array();
  r.appendAnimation=function(animation)
  {
    if(animation instanceof Animation)
      this.push(animation);
  }
  r.removeAnimation=function(animation)
  {
    for(var i=0;i<r.length;i++)
    {
      if(r[i]==animation)
      {
        r.splice(i,1);
        break;
      }
    }
  }
  r.start=function(){    
    for(var i=0;i<r.length;i++)
    {
      r[i].Begin();
    }
    setTimeout(
      function(){
        for(var i=0;i<r.length;i++)
        {
          r[i].Stop(Duration);
        }
      },
      Duration
    );
    onfinish();
  }
  return r;

}
//////////////////////////////下面是使用方法////////////////////////////////
function $(id)
{
   return document.getElementById(id);
}
var a1=new Animation($("output1"),"value");
var a2=new Animation($("output2"),"width",function(x){return Math.floor(x/10);});
var a3=new Animation($("output3").style,"filter",function(x){return "alpha(opacity="+Math.floor(x/5000*100)+")";});
var a4=new Animation($("output4").style,"width",function(x){return Math.floor(x*x*x/50000/5000)+"px";});
var s=new StoryBoard(5000);
s.appendAnimation(a1);
s.appendAnimation(a2);
s.appendAnimation(a3);
s.appendAnimation(a4);
s.start();

</script>
<pre>
output1是改变value
output1是改变宽度
output3是淡入
output4是带缓动的宽度
</pre>

相关文章

  • 微信小程序入口场景的问题集合与相关解决方法

    微信小程序入口场景的问题集合与相关解决方法

    这篇文章主要介绍了微信小程序入口场景的问题集合与相关解决方法,从零开始开发一个小程序,大多数坑点都是在微信小程序的各个入口场景处。所以这里整理一下微信小程序的各个入口场景会面临的问题以及解决方案,需要的朋友可以参考下
    2019-06-06
  • javascript实现简易聊天室

    javascript实现简易聊天室

    这篇文章主要为大家详细介绍了javascript实现简易聊天室,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • 详解cordova打包成webapp的方法

    详解cordova打包成webapp的方法

    本篇文章主要介绍了详解cordova打包成webapp的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • 微信小程序以7天为周期连续签到7天功能效果的示例代码

    微信小程序以7天为周期连续签到7天功能效果的示例代码

    这篇文章主要介绍了微信小程序以7天为周期连续签到7天功能效果的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • js阻止浏览器默认行为的简单实例

    js阻止浏览器默认行为的简单实例

    下面小编就为大家带来一篇js阻止浏览器默认行为的简单实例。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • 纯JS实现五子棋游戏

    纯JS实现五子棋游戏

    这篇文章主要为大家详细介绍了纯JS实现五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • javascript的正则匹配方法学习

    javascript的正则匹配方法学习

    这篇文章主要为大家详细介绍了javascript的正则匹配方法,帮助大家更快更高效的学习javascript正则的相关内容,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • 常用限制input的方法的js代码

    常用限制input的方法的js代码

    常用限制input的方法的js代码...
    2007-03-03
  • JS实现获取自定义属性data值的方法示例

    JS实现获取自定义属性data值的方法示例

    这篇文章主要介绍了JS实现获取自定义属性data值的方法,结合实例形式较为详细的分析了javascript针对自定义属性data的相关操作技巧,需要的朋友可以参考下
    2018-12-12
  • js实现登录框鼠标拖拽效果

    js实现登录框鼠标拖拽效果

    本文主要介绍了js实现登录框鼠标拖拽效果的实例,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03

最新评论