javascript动画效果类封装代码


Posted in Javascript onAugust 28, 2007

<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>

Javascript 相关文章推荐
经常用的图片在容器中的水平垂直居中实例
Jun 10 Javascript
jquery 常用操作方法
Jan 28 Javascript
javascript 动态修改样式和层叠样式表代码
Apr 27 Javascript
JavaScript 原型学习总结
Oct 29 Javascript
javascript阻止浏览器后退事件防止误操作清空表单
Nov 22 Javascript
如何设置一定时间内只能发送一次请求
Feb 28 Javascript
javascript数组操作方法小结和3个属性详细介绍
Jul 05 Javascript
javascript实现图片跟随鼠标移动效果的方法
May 13 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
May 08 jQuery
JS原生带小白点轮播图实例讲解
Jul 22 Javascript
关于定制FileField中的上传文件名称问题
Aug 22 Javascript
electron中使用bootstrap的示例代码
Nov 06 Javascript
Google韩国首页图标动画效果
Aug 26 #Javascript
javascript在一段文字中的光标处插入其他文字
Aug 26 #Javascript
有一段有意思的代码-javascript现实多行信息
Aug 26 #Javascript
LBS blog sql注射漏洞[All version]-官方已有补丁
Aug 26 #Javascript
javascript下操作css的float属性的特殊写法
Aug 22 #Javascript
ASP中用Join和Array,可以加快字符连接速度的代码
Aug 22 #Javascript
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
Aug 21 #Javascript
You might like
神族 Protoss 剧情介绍
2020/03/14 星际争霸
php5.2时间相差8小时
2007/01/15 PHP
PHP setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
php自定义错误处理用法实例
2015/03/20 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
javascript操作css属性
2013/12/30 Javascript
js简单的弹出框有关闭按钮
2014/05/05 Javascript
jQuery实现的仿select功能代码
2015/08/19 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
js从外部获取图片的实现方法
2016/08/05 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
2017/08/16 Javascript
zepto.js 实时监听输入框的方法
2018/12/04 Javascript
Vue 引入AMap高德地图的实现代码
2019/04/29 Javascript
使用layer弹窗,制作编辑User信息页面的方法
2019/09/27 Javascript
jQuery 淡入/淡出效果函数用法分析
2020/05/19 jQuery
如何手写一个简易的 Vuex
2020/10/10 Javascript
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
如何利用Fabric自动化你的任务
2016/10/20 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
2018/10/28 Python
对python自动生成接口测试的示例讲解
2018/11/30 Python
python requests证书问题解决
2019/09/05 Python
python使用多线程查询数据库的实现示例
2020/08/17 Python
python 调用API接口 获取和解析 Json数据
2020/09/28 Python
Agoda.com官方网站:便宜预订全球酒店,高达80%的折扣
2018/04/04 全球购物
优秀应届毕业生自荐信
2013/11/16 职场文书
《棉鞋里的阳光》教学反思
2014/04/24 职场文书
改作风抓落实促发展心得体会
2014/09/10 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
村党组织公开承诺书
2015/04/30 职场文书
2015年度内部审计工作总结
2015/05/20 职场文书
高中运动会广播稿
2015/08/19 职场文书
SpringBoot整合阿里云视频点播的过程详解
2021/12/06 Java/Android
分享node.js实现简单登录注册的具体代码
2022/04/26 NodeJs