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 相关文章推荐
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
Feb 23 Javascript
jqeury-easyui-layout问题解决方法
Mar 24 Javascript
JS中FRAME的操作问题实例分析
Oct 21 Javascript
javascript框架设计之类工厂
Jun 23 Javascript
Node.js操作Firebird数据库教程
Mar 04 Javascript
JavaScript预解析及相关技巧分析
Apr 21 Javascript
Bootstrap布局之栅格系统详解
Jun 13 Javascript
vue实现app页面切换动画效果实例
May 23 Javascript
jQuery实现表格冻结顶栏效果
Aug 20 jQuery
vue中实现上传文件给后台实例详解
Aug 22 Javascript
vue中axios防止多次触发终止多次请求的示例代码(防抖)
Feb 16 Javascript
JavaScript数组排序功能简单实现
May 14 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
PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
2006/10/09 PHP
如何使用php判断所处服务器操作系统的类型
2013/06/20 PHP
浅析php中常量,变量的作用域和生存周期
2013/08/10 PHP
浅谈php函数serialize()与unserialize()的使用方法
2014/08/19 PHP
PHP面向对象程序设计之类与反射API详解
2016/12/02 PHP
js 上传图片预览问题
2010/12/06 Javascript
详解强大的jQuery选择器之基本选择器、层次选择器
2012/02/07 Javascript
关于extjs4如何获取grid修改后的数据的问题
2013/08/07 Javascript
jQuery UI库中dialog对话框功能使用全解析
2016/04/23 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
JavaScript字符串对象(string)基本用法示例
2017/01/18 Javascript
Javascript中的 “&amp;” 和 “|” 详解
2017/02/02 Javascript
巧用weui.topTips验证数据的实例
2017/04/17 Javascript
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
JavaScript实现修改伪类样式
2017/11/27 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
利用Vue构造器创建Form组件的通用解决方法
2018/12/03 Javascript
详解如何运行vue项目
2019/04/15 Javascript
JS实现根据详细地址获取经纬度功能示例
2019/04/16 Javascript
nodejs一个简单的文件服务器的创建方法
2019/09/13 NodeJs
vue遍历生成的输入框 绑定及修改值示例
2019/10/30 Javascript
解决VUEX的mapState/...mapState等取值问题
2020/07/24 Javascript
Python整型运算之布尔型、标准整型、长整型操作示例
2017/07/21 Python
TensorFlow 滑动平均的示例代码
2018/06/19 Python
Django Form 实时从数据库中获取数据的操作方法
2019/07/25 Python
Python基于pip实现离线打包过程详解
2020/05/15 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
2020/05/22 Python
Python爬虫设置ip代理过程解析
2020/07/20 Python
Python实现FTP文件定时自动下载的步骤
2020/12/19 Python
HTML5 placeholder(空白提示)属性介绍
2013/08/07 HTML / CSS
【HTML5】Canvas绘制简单图片教程
2016/05/13 HTML / CSS
J2EE面试题
2016/03/14 面试题
2014厂务公开实施方案
2014/02/17 职场文书
社区志愿者活动总结
2014/06/26 职场文书
2015年医院保卫科工作总结
2015/07/23 职场文书
MySQL约束(创建表时的各种条件说明)
2022/06/21 MySQL