热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Javascript补间动画操作

早期前看过cloudgamer一篇介绍js缓动算法的blog,前段时间因为项目需要,所以又看了一遍,非常感谢cloudgamer提供算法,虽然这个算法是来自ActionScript2.0,我这次只

早期前看过cloudgamer一篇介绍js 缓动算法的blog,前段时间因为项目需要,所以又看了一遍,非常感谢cloudgamer提供算法,虽然这个算法是来自ActionScript 2.0,我这次只是将该算法封装,然后提供了一些操作补间动画的方法(其中也参考了一些著名的js类库调用方式),希望能帮到有需要的人,实现更好用户体验的web应用程序.

ps:补间动画听的最多的应该就是在flash上,所谓补间动画又叫做中间帧动画,渐变动画,只要建立起始和结束的画面,中间部分由软件自动生成,省去了中间动画制作的复杂过程

 

废话不多说了,这次提供的完整类名是Lei.Tween,当然可以说Lei.Tween是在模拟补间动画,完全满足补间动画概念基本不可能实现,

首先说明一下调用方式

 

var T=new Lei.Tween(a,b,c);

a: 动画对象,可以传递object 或 id(string)

b: 参数集合对象,包括:

{ css 名称:{from:初使值,to:结束值}...}

 例:

 {"width":{from:10,to:100}} //将对象的width从10px 扩大到 100px


 {"width":{to:100}} //将对象的width从当前值扩大到100px


 {"width":{to:100},"height":{to:100}} //同时将对象的width与height从当前值扩大到100px

 

c: 参数集合包括

 

{
duration: 100,                      //持续时间,值越大,动画速度越慢
tweenType: "Linear",         //Tween类型(缓动类型)
easeType: "easeIn",          //Tween缓动类型,配合tweenType属性
onStart: null,                     //动画开始时触发事件
onEnd: null                         //动画结束后触发事件
}

 

方法

T.play(); //播放动画

 

我们来看一个简单实例,这个实例效果就是将一个id为test的div均匀放大的效果.

 

var  T = new  Lei.Tween( " test " ,
{
 
" width " :{from: 10 ,to: 100 }
});
T.play();

 

接下来我们给这个动画加上缓动效果. 关于缓动效果的算法及描述请参考cloudgamer的一篇blog,效果请查看后面的效果演示

var T = new  Lei.Tween( " test " ,
 {
" width " :{from: 10 ,to: 100 }},
 {tweenType:
" Bounce " ,easeType: " easeInOut " });
T.play();



 

 使用onEnd事件来实现动画连续.下面的这个实例是将div宽度放大完成后,继续将高度放大

 

new  Lei.Tween( " test456 " ,{ " width " :{from: 10 ,to: 100 }},
       {onEnd:
function (o){ // 默认参数:当前对象
          new  Lei.Tween(o,{ " height " :{from: 10 ,to: 100 }}).play();
       }
       }).play();

 

 

 

支持颜色渐变

 

var  T  =   new  Lei.Tween( " test " ,{ " background-color " :{from: " #005BB7 " ,to: " #BF0065 " }},
     {duration:
150 // 减慢速度
   );

T.play();

 

 

 

 下面看看缓动类型的各种效果,缓动类型分为两种:tweenType与easeType,这些算法来自ActionScript2

 


 
 
 
如果上面效果不能正常查看,您还可以查看此处: http://w.d0086.com/sunlei/tween.htm
 
好吧,就写这么多,完整源码请在 这里下载
 
Lei.Tween可能还有很多因素未考虑全面,大家可以自行在源码上修改.也欢迎批评

推荐阅读
  • Spark 贝叶斯分类算法
    一、贝叶斯定理数学基础我们都知道条件概率的数学公式形式为即B发生的条件下A发生的概率等于A和B同时发生的概率除以B发生的概率。根据此公式变换,得到贝叶斯公式:即贝叶斯定律是关于随机 ... [详细]
  • 最近在做一个大屏项目,有一个需求视频做背景,这个在vue开发的时候做了很多遍了,以为手到擒来。背景分析前端框架:UMIved ... [详细]
  • 猫猫分享,必须精品原文地址:http:blog.csdn.netu013357243articledetails44571163素材地址:http:download.csdn.n ... [详细]
  • 页面按钮<buttonbindtap"addImg"class"addPng&a ... [详细]
  • 以SOA服务为导向的信息系统构建是通过有计划地构建信息系统时,一种简单而有柔性的方法,就是组件化与服务导向架构。过去的信息系统,是在使用者需要新功能时才开发的,也就是响应不同时 ... [详细]
  • ARToolKitunity
    ARToolKit为开源的AR库,相对于高通和easyAr有几点特点:1)开源2)识别项目可以动态添加(详细在后)3)识别文件可以本地生成4)目前只能识别图片(目前为.jpg格式) ... [详细]
  • Ununtu 12.04 x64位安装docker
    什么是DockerDocker是一个开源项目,诞生于2013年初,最初是dotCloud公司内部的一个业余项目。它基于Google公司推出的Go语言实现。项目后来加入了Linux基 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • 用JavaScript实现的太空人手表
    用JavaScript实现的太空人手表-JS写的太空人手表,没有用canvas、svg。主要用几个大的函数来动态显示时间、天气这些。天气的获取用到了AJAX请求。代码中有详细的注释 ... [详细]
  • JavaScript在常人看来都是门出不了厅堂的小语言,仅管它没有明星语言的闪耀,但至少网页的闪耀还是需要它的,同时它是一门很实用的语言,本人平时就喜欢拿它来写点实用工具或应用,本文演示用JavaSc ... [详细]
  • JavaScript概述1.JavaScript定义JavaScript是Netscape公司开发的一种基于对象和事件驱动的脚本语言。它是弱类型语言,只能由浏览器解释执行。其中:脚本语言:解释运行( ... [详细]
  • 查看书籍详细信息:PHPforFlashFMS动态网站开发手札(附光……编辑推荐本书采用最新FlashRemoting技术,搭配开放原码,包括最新流行的Adobe官方支援Zend_ ... [详细]
  • setInterval()函数publicfunctionsetInterval(closure:Function,delay:Number,arguments):uint语 ... [详细]
  • 题目大意题目原文:http:uva.onlinejudge.orgexternal10410474.pdf背景还是基本的排序问题,题目意思很简单就是首先 ... [详细]
  • 转载自:http:www.hbtelecom.com.cndetail.asp?news_id78369_______________________________ ... [详细]
author-avatar
mobiledu2402852413
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有