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 相关文章推荐
理解Javascript_08_函数对象
Oct 15 Javascript
Jquery 动态生成表格示例代码
Dec 24 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
Mar 18 Javascript
深入理解JavaScript中的对象
Jun 04 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
Dec 02 Javascript
浅析2种JavaScript继承方式
Dec 04 Javascript
不定义JQuery插件 不要说会JQuery
Mar 07 Javascript
js实现手机拍照上传功能
Jan 17 Javascript
详解封装基础的angular4的request请求方法
Jun 05 Javascript
在js代码拼接dom对象到页面上的模板总结
Oct 21 Javascript
浅谈Three.js截图并下载的大坑
Nov 01 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
Feb 28 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防注入及开发安全详细解析
2013/08/09 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
PHP错误处理函数register_shutdown_function使用示例
2017/07/03 PHP
PHP+Ajax实现的检测用户名功能简单示例
2019/02/12 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
Javascript 中的类和闭包
2010/01/08 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
jQuery学习之prop和attr的区别示例介绍
2013/11/15 Javascript
jQuery中的$.ajax()方法应用
2014/05/06 Javascript
jQuery取id有.的值的方法
2014/05/21 Javascript
轻松创建nodejs服务器(3):代码模块化
2014/12/18 NodeJs
简介JavaScript中的getSeconds()方法的使用
2015/06/10 Javascript
Zero Clipboard实现浏览器复制到剪贴板的方法(多个复制按钮)
2016/03/24 Javascript
jQuery模仿阿里云购买服务器选择购买时间长度的代码
2016/04/29 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
2017/03/08 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
2018/03/19 Javascript
js中Array对象的常用遍历方法详解
2019/01/17 Javascript
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
10分钟学会js处理json的常用方法
2020/12/06 Javascript
python类中super()和__init__()的区别
2016/10/18 Python
Python编写一个闹钟功能
2017/07/11 Python
python与caffe改变通道顺序的方法
2018/08/04 Python
Python如何爬取实时变化的WebSocket数据的方法
2019/03/09 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
实例详解Python模块decimal
2019/06/26 Python
Python脚本利用adb进行手机控制的方法
2019/07/08 Python
用Python识别人脸,人种等各种信息
2019/07/15 Python
HTML的form表单和django的form表单
2019/07/25 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
2019/08/29 Python
捷克原创男装和女装购物网站:Bolf.cz
2018/04/28 全球购物
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
思想专业自荐信范文
2013/12/25 职场文书
社区交通安全实施方案
2014/03/22 职场文书
2016新年致辞
2015/08/01 职场文书
搞笑Gif:这么白这么长的腿像极了一楼的女朋友
2022/03/21 杂记