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 相关文章推荐
获取客户端网卡MAC地址和IP地址实现JS代码
Mar 17 Javascript
node.js中的path.extname方法使用说明
Dec 09 Javascript
JQuery控制radio选中和不选中方法总结
Apr 15 Javascript
javascript实现根据时间段显示问候语的方法
Jun 18 Javascript
Node.js的Koa框架上手及MySQL操作指南
Jun 13 Javascript
angular.JS实现网页禁用调试、复制和剪切
Mar 31 Javascript
Angularjs cookie 操作实例详解
Sep 27 Javascript
axios 处理 302 状态码的解决方法
Apr 10 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
Aug 29 Javascript
Vue-component全局注册实例
Sep 06 Javascript
基于游标的分页接口实现代码示例
Nov 12 Javascript
React forwardRef的使用方法及注意点
Jun 13 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 获取客户端真实IP地址多种方法小结
2010/05/15 PHP
workerman结合laravel开发在线聊天应用的示例代码
2018/10/30 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
一个通过script自定义属性传递配置参数的方法
2014/09/15 Javascript
jQuery实现拖动调整表格单元格大小的代码实例
2015/01/13 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
2015/10/21 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
2016/06/08 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
2017/04/25 Javascript
layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
2017/09/22 Javascript
JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码
2017/09/23 jQuery
微信小程序实现预览图片功能
2020/10/22 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
在layui框架中select下拉框监听更改事件的例子
2019/09/20 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
Vue.js桌面端自定义滚动条组件之美化滚动条VScroll
2020/12/01 Vue.js
python控制台显示时钟的示例
2014/02/24 Python
为什么说Python可以实现所有的算法
2019/10/04 Python
K最近邻算法(KNN)---sklearn+python实现方式
2020/02/24 Python
详解canvas绘制网络字体几种方法
2019/08/27 HTML / CSS
英国最大的美妆产品在线零售商之一:Beauty Bay
2017/09/29 全球购物
意大利拉斐尔时尚购物网:Raffaello Network(支持中文)
2018/11/09 全球购物
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
护理专科毕业推荐信
2013/11/10 职场文书
什么是岗位职责
2013/11/12 职场文书
领导的自我鉴定
2013/12/28 职场文书
上课看小说检讨书
2014/02/22 职场文书
计算机专业毕业生自荐书
2014/06/02 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
边城读书笔记
2015/06/29 职场文书
2015年国庆晚会主持词
2015/07/01 职场文书
python实现web邮箱扫描的示例(附源码)
2021/03/30 Python
pytorch中Schedule与warmup_steps的用法说明
2021/05/24 Python
Jpa Specification如何实现and和or同时使用查询
2021/11/23 Java/Android