`
zhangyaochun
  • 浏览: 2568648 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

动画脚本Tween

 
阅读更多

贴上一个Tween的源码。

 

var Tween = {
	Linear: function(t,b,c,d){ return c*t/d + b; },
	Quad: {
		easeIn: function(t,b,c,d){
			return c*(t/=d)*t + b;
		},
		easeOut: function(t,b,c,d){
			return -c *(t/=d)*(t-2) + b;
		},
		easeInOut: function(t,b,c,d){
			if ((t/=d/2) < 1) return c/2*t*t + b;
			return -c/2 * ((--t)*(t-2) - 1) + b;
		}
	},
	Cubic: {
		easeIn: function(t,b,c,d){
			return c*(t/=d)*t*t + b;
		},
		easeOut: function(t,b,c,d){
			return c*((t=t/d-1)*t*t + 1) + b;
		},
		easeInOut: function(t,b,c,d){
			if ((t/=d/2) < 1) return c/2*t*t*t + b;
			return c/2*((t-=2)*t*t + 2) + b;
		}
	},
	Quart: {
		easeIn: function(t,b,c,d){
			return c*(t/=d)*t*t*t + b;
		},
		easeOut: function(t,b,c,d){
			return -c * ((t=t/d-1)*t*t*t - 1) + b;
		},
		easeInOut: function(t,b,c,d){
			if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
			return -c/2 * ((t-=2)*t*t*t - 2) + b;
		}
	},
	Quint: {
		easeIn: function(t,b,c,d){
			return c*(t/=d)*t*t*t*t + b;
		},
		easeOut: function(t,b,c,d){
			return c*((t=t/d-1)*t*t*t*t + 1) + b;
		},
		easeInOut: function(t,b,c,d){
			if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
			return c/2*((t-=2)*t*t*t*t + 2) + b;
		}
	},
	Sine: {
		easeIn: function(t,b,c,d){
			return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
		},
		easeOut: function(t,b,c,d){
			return c * Math.sin(t/d * (Math.PI/2)) + b;
		},
		easeInOut: function(t,b,c,d){
			return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
		}
	},
	Expo: {
		easeIn: function(t,b,c,d){
			return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
		},
		easeOut: function(t,b,c,d){
			return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
		},
		easeInOut: function(t,b,c,d){
			if (t==0) return b;
			if (t==d) return b+c;
			if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
			return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
		}
	},
	Circ: {
		easeIn: function(t,b,c,d){
			return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
		},
		easeOut: function(t,b,c,d){
			return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
		},
		easeInOut: function(t,b,c,d){
			if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
			return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
		}
	},
	Elastic: {
		easeIn: function(t,b,c,d,a,p){
			if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
			if (!a || a < Math.abs(c)) { a=c; var s=p/4; }
			else var s = p/(2*Math.PI) * Math.asin (c/a);
			return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
		},
		easeOut: function(t,b,c,d,a,p){
			if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
			if (!a || a < Math.abs(c)) { a=c; var s=p/4; }
			else var s = p/(2*Math.PI) * Math.asin (c/a);
			return (a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b);
		},
		easeInOut: function(t,b,c,d,a,p){
			if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);
			if (!a || a < Math.abs(c)) { a=c; var s=p/4; }
			else var s = p/(2*Math.PI) * Math.asin (c/a);
			if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
			return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
		}
	},
	Back: {
		easeIn: function(t,b,c,d,s){
			if (s == undefined) s = 1.70158;
			return c*(t/=d)*t*((s+1)*t - s) + b;
		},
		easeOut: function(t,b,c,d,s){
			if (s == undefined) s = 1.70158;
			return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
		},
		easeInOut: function(t,b,c,d,s){
			if (s == undefined) s = 1.70158; 
			if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
			return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
		}
	},
	Bounce: {
		easeIn: function(t,b,c,d){
			return c - Tween.Bounce.easeOut(d-t, 0, c, d) + b;
		},
		easeOut: function(t,b,c,d){
			if ((t/=d) < (1/2.75)) {
				return c*(7.5625*t*t) + b;
			} else if (t < (2/2.75)) {
				return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
			} else if (t < (2.5/2.75)) {
				return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
			} else {
				return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
			}
		},
		easeInOut: function(t,b,c,d){
			if (t < d/2) return Tween.Bounce.easeIn(t*2, 0, c, d) * .5 + b;
			else return Tween.Bounce.easeOut(t*2-d, 0, c, d) * .5 + c*.5 + b;
		}
	}
};
 
分享到:
评论

相关推荐

    iTween for Unity3D,unity3d缓动类

    可能很多人不理解,既然2.6版本有了动画编辑器,为什么还需要用这个动画脚本呢?原因很简单,iTween最大的特点就是一步到位, 即一个简单函数就能让物体实现一个完整的动画过程,非常方便,而不用通过动画编辑器(虽然更...

    iTween unity3d

    特点: 可能很多人不理解,既然2.6版本有了动画编辑器,为什么还需要用这个动画脚本呢?原因很简单,iTween最大的特点就是一步到位, 即一个简单函数就能让物体实现一个完整的动画过程,非常方便,而不用通过动画编辑器...

    tween.js:JavaScript动画引擎

    更新说明在v18中,您应包括的脚本已从src/Tween.js移至dist/tween.umd.js 。 请参阅下面的。 const box = document . createElement ( 'div' ) box . style . setProperty ( 'background-color' , '#008800' ) box...

    RZTweenSpirit:适用于iOS的分段补间动画库

    RZTweenSpirit非常适合编写动画时间轴脚本,但是它还可以做更多事情。 让我们看一个简单的例子: // Create an animator RZTweenAnimator *tweenAnimator = [[RZTweenAnimator alloc ] init ]; // Use a float ...

    最新 Simple Waypoint System 5.5.2 - unity动画插件

    Simple Waypoint System 5.5.2 - unity动画插件 简单航点系统被成千上万的开发者所使用, 它允许你在编辑器中直接创建路径, 然后通过运动脚本告诉任何游戏对象跟随你的路径. 问题/支持. Unity论坛主题 文档/API参考...

    UTween:UTween是Unity的插值动画组件。 您可以通过内置组件快速配置动画,也可以通过代码编写动画

    UTween是Unity的插值动画组件。 您可以通过内置组件快速配置动画,也可以通过代码编写动画。1.1。1.2。1.3。... 支持动态起点,动画过程中的参数动态调整(仅在脚本模式下可用)。 提供基于MaterialPr

    TweenLite原生JS动画引擎代码与实例分享

    脚本资源,Ajax/JavaScript,TweenLite,动画引擎 TweenLite动画引擎分享,原生JS简单版,关于JS动画,一般我们处理的方式就是临时写一个 setTimeout来触发 要么就是基于框架来实现比如JQ的animate Mootools的Fx.Tween...

    PTween:在Unity中创建UI动画以更好地导航的简便方法

    您仅需要以下三个脚本: PTweenPlayerComponent-包含所有将要播放的补间动画的根组件。 PTweenComponent-将被动画化的UI元素,它保存其动画的配置,您可以配置其位置,旋转,缩放和alpha动画。 PTweenUtil-静态类...

    《Android应用开发揭秘》附带光盘代码.

     5.3.1 Tween动画  5.3.2 Frame动画  5.3.3 GIF动画播放  5.4 小结  第6章 Android数据存储  6.1 Android数据存储初探  6.2 数据存储之Shared Preferences  6.3 数据存储之Files  6.4 数据存储之Network  ...

    UrMotion:灵活的运动引擎,用于Unity中非基于时间的动画

    它使您可以轻松快捷地在脚本上创建非基于时间的复杂动画。 要开始使用UrMotion,请将Assets/UrMotion Directoy复制到您的项目中,然后using UrMotion;编写using UrMotion; 在您的代码中。 using UnityEngine ;using...

    《Android应用开发揭秘》源码

     5.3.1 Tween动画  5.3.2 Frame动画  5.3.3 GIF动画播放  5.4 小结  第6章 Android数据存储  6.1 Android数据存储初探  6.2 数据存储之Shared Preferences  6.3 数据存储之Files  6.4 数据存储之Network  ...

    DOTween Pro 1.0.075.zip

    DoTween Pro是一款untiy插件,是untiy中最好用的tween插件,比起Dotween的免费版要多很多功能,实现脚本和视觉脚本的新功能,支持包括移动,淡出,颜色,旋转,缩放,打孔,摇动,文本,相机属性等!

    Android应用开发揭秘pdf高清版

    5.3.1 Tween动画 5.3.2 Frame动画 5.3.3 GIF动画播放 5.4 小结 第6章 Android数据存储 6.1 Android数据存储初探 6.2 数据存储之Shared Preferences 6.3 数据存储之Files 6.4 数据存储之Network 6.5 Android数据库...

    android开发揭秘PDF

    5.3.1 Tween动画 5.3.2 Frame动画 5.3.3 GIF动画播放 5.4 小结 第6章 Android数据存储 6.1 Android数据存储初探 6.2 数据存储之Shared Preferences 6.3 数据存储之Files 6.4 数据存储之Network 6.5 Android数据库...

    playcanvas-vue:该项目将出色的PlayCanvas 3D引擎与VUE.js结合在一起

    使用Tween.js动画 使用基础纹理压缩 使用Vue.js的强大功能和React能力 使用VUEX状态管理 使用Vue路由器 该项目是概念证明,而不是完整的应用程序。 项目设置 npm install 编译和热重装以进行开发 npm run serve 编译...

Global site tag (gtag.js) - Google Analytics