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 相关文章推荐
js下将字符串当函数执行的方法
Jul 13 Javascript
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
Oct 11 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
Jul 23 Javascript
jquery 判断div show的状态实例
Dec 03 Javascript
jQuery实现CheckBox全选、全不选功能
Jan 11 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
Feb 08 Javascript
最新Javascript程序员面试试题和解题方法
Nov 23 Javascript
动态Axios的配置步骤详解
Jan 12 Javascript
解决iView中时间控件选择的时间总是少一天的问题
Mar 15 Javascript
深入理解JavaScript 中的执行上下文和执行栈
Oct 23 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
Jun 19 Javascript
react实现复选框全选和反选组件效果
Aug 25 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日期处理函数 整型日期格式
2011/01/12 PHP
php实现memcache缓存示例讲解
2013/12/04 PHP
10个值得深思的PHP面试题
2016/11/14 PHP
php使用变量动态创建类的对象用法示例
2017/02/06 PHP
JavaScript打印iframe内容示例代码
2013/08/20 Javascript
jquery中map函数遍历数组用法实例
2015/05/18 Javascript
Bootstrap轮播插件使用代码
2016/10/11 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
Vue拖拽组件开发实例详解
2018/05/11 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
2018/11/25 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
vue分页插件的使用方法
2019/12/25 Javascript
[01:14:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Orenda
2014/05/22 DOTA
[01:16]2014DOTA2 TI专访C9战队EE:中国五强中会占三席
2014/07/10 DOTA
python循环监控远程端口的方法
2015/03/14 Python
如何使用pandas读取txt文件中指定的列(有无标题)
2020/03/05 Python
浅谈django 模型类使用save()方法的好处与注意事项
2020/03/28 Python
python怎么删除缓存文件
2020/07/19 Python
HTML5之多线程(Web Worker)
2019/01/02 HTML / CSS
Clarins娇韵诗美国官网:法国天然护肤品牌
2016/09/26 全球购物
香港草莓网土耳其网站:Strawberrynet TR
2017/03/02 全球购物
KIKO MILANO荷兰网上商店:意大利专业化妆品品牌
2017/05/12 全球购物
软件测试工程师结构化面试题库
2016/11/23 面试题
YII2 全局异常处理深入讲解
2021/03/24 PHP
学生生病请假条范文
2014/02/16 职场文书
我们的节日中秋活动方案
2014/08/19 职场文书
革命英雄事迹演讲稿
2014/09/13 职场文书
离婚协议书怎么写的
2014/12/14 职场文书
2015年党总支工作总结
2015/05/25 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
初一语文教学反思
2016/03/03 职场文书
技术入股协议书
2016/03/22 职场文书
判断Python中的Nonetype类型
2021/05/25 Python
Java Spring Boot 正确读取配置文件中的属性的值
2022/04/20 Java/Android