基于tween的个人动画库封装

在做动画之前我们需要搞清楚动画需要哪些变量

1:起步的位置(状态) begin

2:运动的终点 target

3:运动的距离 change=target-begin

4:运动所需的时总时间 duration

5:当前运动了多久 timer

当前所在的位置=timer/duration*change+begin

所以我们在写动画这个函数的时候,动画算法方面需要4这些参数

在tween算法中 ,算法 已经设计好了 我们只需要将timer duration change begin 这四个值传递进去 即可得到我们所需的当前位置的值,

除了算法,我们还需要了解 我们需要传递什么值给我们的动画的函数

1:指定运动的元素

2:运动的目的地即target

2:运动所需的时间 duration

3:可以传递也可以不传递 即回调函数,即当动画执行完 再执行的函数

了解了这些 那么我们写一个简单的动画

function animate(ele, attr, target, duration,fnCallBack) {
        var begin = getCss(ele, attr);
        var change = target - begin;
        var timer = 0;
        var interval = 15;
        window.clearInterval(ele.temp);
        function step() {
            timer += interval;
            if (timer >= duration) {
                ele.style[attr] = target + "px";
                window.clearInterval(ele.temp);
                ele.temp=null;
                if(typeof fnCallBack=="function"){
                    fnCallBack.call(ele);
                }
            } else {
                ele.style[attr] = timer / duration * change + begin + "px";
            }
        }
        ele.temp = window.setInterval(step, interval)
    }

这只是一个简单 的动画函数 ,具体依赖 tween 算法封装思路如下

我先前就在DOM库中写好了getCss 跟setCss两种方法

所以 获取初始的begin值 可以通过getCss获得

设置运动的位置可以由setCss负责

算法过程 可以将timer change duration begin四个值传递给tween算法库

下面我们来看一个稍微复杂点的动画封装

目的地 target 我们 不再传递一个值 而是一个对象 这样我们就可以实现多维的运动 代码如下

var oChange={};
    var oBegin={};
    var count=0;
    for(var attr in oTarget){
        var begin=parseFloat(DOM.getCss(ele,attr));
        var change=oTarget[attr]-begin;
        if(change){
            oBegin[attr]=begin;
            oChange[attr]=change;
            count++;
        }
    }
    if(!count) return;//如果成立即不需要运动 后面的代码也不需要执行

那么执行setCss的时候也是需要遍历的 具体怎么操作我就不详细的写了

想看我tween动画库的 可以私密我

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-09 09:09:50

基于tween的个人动画库封装的相关文章

前端能力模型-动画类型及动画库的介绍

一.背景: 合适的动画不仅更能吸引人们的眼球,也能让你的应用体验更为流畅,而将动画的效果做到极致,才能让用户感到使用你的应用是一种享受,而不是觉得生硬和枯燥. 二.动画技术分类: 按技术类型来进行分类,分为三类:JS动画,CSS3动画,html5动画,接下来分别对三类动画进行讲解. 1)JS动画 通过一个定时器setInterval间隔来改变元素样式,动画结束时clearInterval即可.(早期类库:jquery.prototype.mootools) 优缺点: 优点:可控性很强,兼容性较好

tween.js 用户指南 - 与 Three.js 配合使用的补间动画库

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. Learning Three.js - Tween.js for Smooth Animation tween.js 用户指南tween.js u

动画库tween.js--常用的运动算法

动画库tween.js var Tween = { Linear:function (start,alter,curTime,dur) {return start+curTime/dur*alter;},//最简单的线性变化,即匀速运动 Quad:{//二次方缓动 easeIn:function (start,alter,curTime,dur) { return start+Math.pow(curTime/dur,2)*alter; }, easeOut:function (start,al

tween.js可生成平滑动画效果的js动画库

tween.js是一款可生成平滑动画效果的js动画库.tween.js允许你以平滑的方式修改元素的属性值.它可以通过设置生成各种类似CSS3动画效果.相关的jquery插件还有:snabbt.js 强大的jQuery动画库插件和Tweene-超级强大的jQuery动画代理插件. tween.js允许你以平滑的方式修改元素的属性值.你只需要告诉tween你想修改什么值,以及动画结束时它的最终值是什么,动画花费多少时间等信息,tween引擎就可以计算从开始动画点到结束动画点之间值,来产生平滑的动画效

动画库tween.js

动画库tween.js var Tween = { Linear:function (start,alter,curTime,dur) {return start+curTime/dur*alter;},//最简单的线性变化,即匀速运动 Quad:{//二次方缓动 easeIn:function (start,alter,curTime,dur) { return start+Math.pow(curTime/dur,2)*alter; }, easeOut:function (start,al

基于轻量级高性能的CSS3动画库

简要教程 Repaintless.css是一款轻量级高性能的CSS3动画库.Repaintless.css通过特殊的方法来制作元素动画,不会引起页面的重绘,使它比其它CSS动画库具有更高的性能. 安装 你可以通过bower或npm来安装Repaintless.css. 1 $ bower install repaintless 2 $ npm install repaintless 使用方法 使用该CSS3动画库需要在页面中引入repaintless.css文件. 1 <link href=&quo

JS动画之缓动函数分析及动画库

上一篇讲了JS动画定时器相关知识,这一篇介绍下缓动函数及流行的动画库. 熟悉的图 实际使用 jquery animate()+jquery.easing插件的使用: $(selector).animate(styles,speed,easing,callback) 原生js使用:张鑫旭同学的文章 缓动函数知识 什么是缓动函数?我的理解是动画参数与数学公式结合的函数. 各流行库缓动函数对比,以easeInQuad为例,如图: Tween.js jQuery.easing GSAP CreateJS

[转] iOS 动画库 Pop 和 Canvas 各自的优势和劣势是什么?

iOS 动画库 Pop 和 Canvas 各自的优势和劣势是什么? http://www.zhihu.com/question/23654895/answer/25541037 拿 Canvas 来和 Pop 比其实不大合适,虽然两者都自称「动画库」,但是「库」这个词的含义有所区别.本质上 Canvas 是一个「动画合集」而 Pop 是一个「动画引擎」. 先说 Canvas.Canvas 的目的是「Animate in Xcode Without Code」.开发者可以通过在 Storyboar

Facebook开源动画库 POP-POPBasicAnimation运用

动画在APP开发过程中还是经常出现,将花几天的时间对Facebook开源动画库 POP进行简单的学习:本文主要针对的是POPBasicAnimation运用:实例源代码已经上传至gitHub,地址:https://github.com/wujunyang/facebookPopTest POP默认支持三种动画 但同时也支持自定义动画 POPBasicAnimation //基本动画 POPSpringAnimation //类似弹簧一般的动画效果 POPDecayAnimation //过阻尼效