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 相关文章推荐
用jQuery模拟页面加载进度条的实现代码
Dec 19 Javascript
JS声明变量背后的编译原理剖析
Dec 28 Javascript
js二级地域选择的实现方法
Jun 17 Javascript
jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
Jan 21 Javascript
AngularJs IE Compatibility 兼容老版本IE
Sep 01 Javascript
详解vue.js之props传递参数
Dec 12 Javascript
基于vue.js中事件修饰符.self的用法(详解)
Feb 23 Javascript
vue实现输入框的模糊查询的示例代码(节流函数的应用场景)
Sep 01 Javascript
vue Element左侧无限级菜单实现
Jun 10 Javascript
js实现特别简单的钟表效果
Sep 14 Javascript
Javascript柯里化实现原理及作用解析
Oct 22 Javascript
微信小程序实现录音Record功能
May 09 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
C# Assembly类访问程序集信息
2009/06/13 PHP
php 文本文件的读取效率
2012/02/10 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
2012/10/06 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
PHP中读取文件的8种方法和代码实例
2014/08/05 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
添加到收藏夹代码(兼容几乎所有的浏览器)
2007/01/09 Javascript
JSON 编辑器实现代码
2009/12/06 Javascript
有关json_decode乱码及NULL的问题
2015/10/13 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
2015/12/09 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
微信小程序 商城开发(ecshop )简单实例
2017/04/07 Javascript
Angular 2.x学习教程之结构指令详解
2017/05/25 Javascript
简单实现js鼠标跟随效果
2020/08/02 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
原生js调用json方法总结
2018/02/22 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
mpvue中使用flyjs全局拦截的实现代码
2018/09/13 Javascript
layer弹出层取消遮罩的方法
2019/09/25 Javascript
JavaScript实现简单随机点名器
2019/11/21 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
TypeScript 运行时类型检查补充工具
2020/09/28 Javascript
Openlayers绘制聚合标注
2020/09/28 Javascript
[51:34]Ti4主赛事胜者组 DK vs EG 2
2014/07/19 DOTA
一个超级简单的python web程序
2014/09/11 Python
Python和Perl绘制中国北京跑步地图的方法
2016/03/03 Python
scrapy spider的几种爬取方式实例代码
2018/01/25 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
对python3中的RE(正则表达式)-详细总结
2019/07/23 Python
html5基础教程常用技巧整理
2013/08/20 HTML / CSS
小程序瀑布流解决左右两边高度差距过大的问题
2019/02/20 HTML / CSS
柒牌官方商城:中国男装优秀品牌
2017/06/30 全球购物
SQL Server里面什么样的视图才能创建索引
2015/04/17 面试题
学生党员思想汇报范文
2014/01/09 职场文书
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang
微信小程序中使用vant框架的具体步骤
2022/02/18 Javascript