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 相关文章推荐
从新浪弄下来的全屏广告代码 与使用说明
Mar 15 Javascript
JQuery里选择超链接的实现代码
May 22 Javascript
Javascript Request获取请求参数如何实现
Nov 28 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
Aug 19 Javascript
BootStrap文件上传样式超好看【持续更新】
May 10 Javascript
JavaScript必知必会(九)function 说起 闭包问题
Jun 08 Javascript
基于bootstrap风格的弹框插件
Dec 28 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
Mar 24 Javascript
webpack学习笔记之代码分割和按需加载的实例详解
Jul 20 Javascript
vue中实现图片和文件上传的示例代码
Mar 16 Javascript
jquery实现简单自动轮播图效果
Jul 29 jQuery
解决vue使用vant轮播组件swipe + flex时文字抖动问题
Jan 07 Vue.js
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开发中常用的字符串操作函数
2011/02/08 PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
2013/04/23 PHP
基于PHP中的常用函数回顾
2013/07/11 PHP
PHP结合Vue实现滚动底部加载效果
2017/12/17 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
2019/12/12 PHP
Laravel框架源码解析之反射的使用详解
2020/05/14 PHP
由浅到深了解JavaScript类
2006/09/08 Javascript
javascript实现的基于金山词霸网络翻译的代码
2010/01/15 Javascript
关于javascript模块加载技术的一些思考
2014/11/28 Javascript
jQuery插件Elastislide实现响应式的焦点图无缝滚动切换特效
2015/04/12 Javascript
判断访客终端类型集锦
2015/06/05 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
2016/12/22 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
javascript中的相等操作符(==与===区别)
2019/12/21 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
浅谈vue中document.getElementById()拿到的是原值的问题
2020/07/26 Javascript
js在HTML的三种引用方式详解
2020/08/29 Javascript
Vite和Vue CLI的优劣
2021/01/30 Vue.js
python 垃圾收集机制的实例详解
2017/08/20 Python
Python sklearn KFold 生成交叉验证数据集的方法
2018/12/11 Python
python opencv如何实现图片绘制
2020/01/19 Python
python异步Web框架sanic的实现
2020/04/27 Python
python百行代码自制电脑端网速悬浮窗的实现
2020/05/12 Python
python 深度学习中的4种激活函数
2020/09/18 Python
Python如何实现感知器的逻辑电路
2020/12/25 Python
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
Puritan’s Pride(普丽普莱)官方网站:美国最大最全的保健品公司之一
2016/10/23 全球购物
法拉利英国精品店:Ferraris Boutique UK
2019/07/20 全球购物
2015年度村委会工作总结
2015/04/29 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
汉语拼音教学反思
2016/02/22 职场文书