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 相关文章推荐
Extjs 几个方法的讨论
Jan 28 Javascript
JavaScript中去掉数组中的重复值的实现方法
Aug 03 Javascript
JavaScript中__proto__与prototype的关系深入理解
Dec 04 Javascript
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
Jan 11 Javascript
javascript仿php的print_r函数输出json数据
Sep 13 Javascript
artDialog+plupload实现多文件上传
Jul 19 Javascript
js实现定时进度条完成后切换图片
Jan 04 Javascript
vue loadmore组件上拉加载更多功能示例代码
Jul 19 Javascript
js正则相关知识点专题
May 10 Javascript
vue中如何实现pdf文件预览的方法
Jul 12 Javascript
vue倒计时刷新页面不会从头开始的解决方法
Mar 03 Javascript
EXTJS7实现点击拖拉选择文本
Dec 17 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
来自phpguru得Php Cache类源码
2010/04/15 PHP
PHP框架Laravel的小技巧两则
2015/02/10 PHP
分享3个php获取日历的函数
2015/09/25 PHP
详解PHP对数组的定义以及数组的创建方法
2015/11/27 PHP
PHP基于ORM方式操作MySQL数据库实例
2017/06/21 PHP
php获取小程序码的实现代码(B类接口)
2020/06/13 PHP
jQueryUI的Dialog的简单封装
2010/06/07 Javascript
Ubuntu 11.10 安装Node.js的方法
2011/11/30 Javascript
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
javascript中indexOf技术详解
2015/05/07 Javascript
javascript中setAttribute()函数使用方法及兼容性
2015/07/19 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符串、list集合
2016/08/11 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
Element-ui table中过滤条件变更表格内容的方法
2018/03/02 Javascript
angularJs中$http获取后台数据的实例讲解
2018/08/08 Javascript
vue单文件组件无法获取$refs的问题
2020/06/24 Javascript
vue.js实现点击图标放大离开时缩小的代码
2021/01/27 Vue.js
可用于监控 mysql Master Slave 状态的python代码
2013/02/10 Python
跟老齐学Python之dict()的操作方法
2014/09/24 Python
python定时器(Timer)用法简单实例
2015/06/04 Python
浅谈使用Python变量时要避免的3个错误
2017/10/30 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
2017/11/23 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
2018/06/28 Python
python根据多个文件名批量查找文件
2019/08/13 Python
opencv3/python 鼠标响应操作详解
2019/12/11 Python
python爬虫实例之获取动漫截图
2020/05/31 Python
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
2018/09/19 HTML / CSS
BIBLOO波兰:捷克的一家在线服装店
2018/03/09 全球购物
北美个性化礼品商店:Things Remembered
2018/06/12 全球购物
国际政治个人自荐信范文
2013/11/26 职场文书
少先队入队活动方案
2014/02/08 职场文书
党的群众路线教育实践活动查摆问题自查报告
2014/10/10 职场文书