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 AJAX 用于计算点击率(统计)
Jun 30 Javascript
学习面向对象之面向对象的术语
Nov 30 Javascript
一个简单的jQuery计算器实现了连续计算功能
Jul 21 Javascript
jquery提示效果实例分析
Nov 25 Javascript
js仿土豆网带缩略图的焦点图片切换效果实现方法
Feb 23 Javascript
jquery插入兄弟节点的操作方法
Dec 07 Javascript
Mac系统下Webstorm快捷键整理大全
May 28 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
Jun 13 Javascript
AngularJS学习笔记之表单验证功能实例详解
Jul 06 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
Apr 15 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
May 27 Javascript
vue新建项目并配置标准路由过程解析
Dec 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
php垃圾代码优化操作代码
2010/08/05 PHP
PHP 实现判断用户是否手机访问
2015/01/21 PHP
CI框架中redis缓存相关操作文件示例代码
2016/05/17 PHP
PHP数组实例详解
2016/06/26 PHP
PHP用continue跳过本次循环中剩余代码的注意点
2017/06/27 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
2019/08/23 PHP
Laravel框架自定义分页样式操作示例
2020/01/26 PHP
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
2014/05/18 Javascript
javascript实现按回车键切换焦点
2015/02/09 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
2018/05/17 Javascript
在Vue 中使用Typescript的示例代码
2018/09/10 Javascript
使用js在layui中实现上传图片压缩
2019/06/18 Javascript
js如何实现元素曝光上报
2019/08/07 Javascript
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
Python爬取三国演义的实现方法
2016/09/12 Python
浅谈Python实现2种文件复制的方法
2018/01/19 Python
使用python实现链表操作
2018/01/26 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
Pytorch .pth权重文件的使用解析
2020/02/14 Python
Django封装交互接口代码
2020/07/12 Python
css3图片边框border-image的用法
2017/06/30 HTML / CSS
个人求职简历的自我评价范文
2013/10/09 职场文书
医学生求职自荐书
2014/06/12 职场文书
工商管理本科生求职信
2014/07/13 职场文书
建筑管理专业求职信
2014/07/28 职场文书
办护照工作证明
2014/10/01 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
前台文员岗位职责
2015/02/04 职场文书
解除劳动合同通知书范本
2015/04/16 职场文书
OpenCV-Python模板匹配人眼的实例
2021/06/08 Python
关于python pygame游戏进行声音添加的技巧
2021/10/24 Python
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫