PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

PLM之家PLMHome-国产软件践行者

[前端框架] 动画库TweenJS常见动画变化方法库

[复制链接]

2020-2-6 16:28:24 1736 0

admin 发表于 2020-2-6 16:28:24 |阅读模式

admin 楼主

2020-2-6 16:28:24

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
; m1 O% ~# K! F% D" M' r$ ?( [

& D3 v" L, m( Q/ @! ?* v9 a4 K7 j9 L
动画库tween.js- X) W. r% @# r

* K4 r' h; k4 I$ W7 z; i& l' X相关资料 http://robertpenner.com/easing/
- E- L- L1 [% N2 a, ]& ~9 R$ m. r
# p! `/ ]( [# ]- c2 r% i* y5 d: ]. {  C+ F  m: Y: G; |, E+ Y% l% c& T
Linear:无缓动效果;0 v0 L* @5 b+ B  i, w* g% w& U
Quadratic:二次方的缓动(t^2);
  H0 j) F' E0 k4 |7 wCubic:三次方的缓动(t^3);/ F! D! b9 h% l1 F4 H
Quartic:四次方的缓动(t^4);  k2 e7 F) S& K8 R+ o
Quintic:五次方的缓动(t^5);
3 @+ M/ x" ?+ f" N" Z, M4 y) ESinusoidal:正弦曲线的缓动(sin(t));1 V7 `9 W4 Q7 `
Exponential:指数曲线的缓动(2^t);# x, _: f' p  g$ i
Circular:圆形曲线的缓动(sqrt(1-t^2));
% a1 N" N. Q0 q. r, q6 oElastic:指数衰减的正弦曲线缓动;
2 ?3 x- g8 U, Q6 [; J8 F; XBack:超过范围的三次方缓动((s+1)*t^3 - s*t^2);
1 v- o( V; ~, F6 S: Z$ W; N$ jBounce:指数衰减的反弹缓动。0 S3 S% F" f7 n" m3 B5 ?
ps:以上都是自己的烂翻译,希望各位修正。! U' S4 ?9 f7 ?$ C. q4 b. I
! \* o( s5 ^2 g+ {9 G3 [1 J
每个效果都分三个缓动方式(方法),分别是:) T2 X  W0 ?5 r
easeIn:从0开始加速的缓动;4 w9 k& \+ d8 O8 d
easeOut:减速到0的缓动;% g; G% u9 Y, R2 s! E5 }8 t2 I! q
easeInOut:前半段从0开始加速,后半段减速到0的缓动。) Q) [- h% y0 b; B7 R  p
其中Linear是无缓动效果,没有以上效果。
# x: @* \$ ?% m8 a: r7 v7 G% K
- s9 [- W2 H# ^. b3 Z! F
1 T! a7 O' R0 K1 }( c# g* q% _0 Y! {
这是as代码,四个参数分别是:4 n! v2 p( O1 E9 K* j
t: current time(当前时间);6 [# _" p, f) L+ T
b: beginning value(初始值);+ O# u* d: X: y
c: change in value(变化量);/ O4 V2 M" E* F* o; Y, U; [" q
d: duration(持续时间)。+ I/ M( ~4 T. Y& D
ps:Elastic和Back有其他可选参数,里面都有说明。& m9 s& K) P) E& n/ o) C: U$ e! j

1 C# d4 {' S: X, y: b  R" I( ^( W那如何在js中利用这些算法呢?可以看到,虽然是as代码,但里面的程序是可以直接放在js里使用的。4 K  w$ N+ e! D2 j% H2 k
我们可以定义一个类,把它这部分放在里面:) \# S- y. @8 j/ H

9 j# ?- T0 H8 N  F1 B& m& A3 f, M" |6 b

( d. ]0 P9 w! S9 M8 M. L[mw_shl_code=javascript,true]var Tween = {  H7 `, [' w, l" G
    Linear: function(t,b,c,d){ return c*t/d + b; },
: }4 x  F/ u; s: ~    Quad: {- B' b$ X& W% T" c) \' }7 S
        easeIn: function(t,b,c,d){
; Z4 H9 _. G4 s& x            return c*(t/=d)*t + b;
1 [1 O- d* \+ Y7 y) Q7 C        },
6 V7 ^: y7 ~" y7 z6 ?        easeOut: function(t,b,c,d){; s) ~7 R6 R. T2 Q/ s5 W. e
            return -c *(t/=d)*(t-2) + b;
/ r/ H) e" a! A0 p3 E        },
5 ~( s. s3 c  i4 [% b! |* v        easeInOut: function(t,b,c,d){% _' m* G( m$ F
            if ((t/=d/2) < 1) return c/2*t*t + b;+ E  ?' b5 ?3 Z; A+ z$ _0 ~
            return -c/2 * ((--t)*(t-2) - 1) + b;
, \4 W9 v! m+ U& P        }
( n* Y1 k! H- w    },5 P: [& Y& r& H1 u6 Z( S& L' Z3 j6 L* ^, r
    Cubic: {3 `" A, e! e( ?* b* R
        easeIn: function(t,b,c,d){
" W2 r" P$ ]0 c+ V7 t+ [7 k# c            return c*(t/=d)*t*t + b;
% c+ M& |0 N" I% ?9 R: ?" M9 V        },+ P' a, G) V. I- p
        easeOut: function(t,b,c,d){) a  B+ l# S" i& A/ }
            return c*((t=t/d-1)*t*t + 1) + b;
( @: W/ n- c9 C        },3 T  Y+ D& `0 s5 D, W2 F2 Y
        easeInOut: function(t,b,c,d){! {7 N, _7 m0 M( \7 S! y
            if ((t/=d/2) < 1) return c/2*t*t*t + b;8 P& i9 {3 u& T+ o4 w
            return c/2*((t-=2)*t*t + 2) + b;% |1 t- j8 B5 \4 b9 P  E. N
        }) _. J! F- T2 ]6 z
    },! S0 N& |1 N( \3 A8 r5 T
    Quart: {
: c6 {/ M4 O9 L        easeIn: function(t,b,c,d){
. P) \4 X3 L/ k) w, o            return c*(t/=d)*t*t*t + b;
, z, Z3 q& F" j  j$ [% h" g9 n        },
3 l) N/ u- K5 K7 l        easeOut: function(t,b,c,d){
; i  K! y1 q1 Y- x' M3 z( T6 Q            return -c * ((t=t/d-1)*t*t*t - 1) + b;
: p( F' }, g! ?# L3 {1 y' U! s        },; [8 Q, U% L& T; R7 \  u! x( X
        easeInOut: function(t,b,c,d){
" @* f1 l) |$ T( {" W: E, K7 D            if ((t/=d/2) < 1) return c/2*t*t*t*t + b;) C  E0 Y) K9 A0 P6 [* q0 r$ ?& |/ v
            return -c/2 * ((t-=2)*t*t*t - 2) + b;
5 v1 {8 y4 Y1 t4 V2 M% t3 X5 a        }' U5 a; V* a7 z! U, K
    },
* m' W5 O, w. J+ [' N% V    Quint: {
3 |- c* D. S7 @1 N        easeIn: function(t,b,c,d){
! B* \) u7 @( n0 u. u! l: x0 Q# |            return c*(t/=d)*t*t*t*t + b;
+ J) _, `# q+ Y4 r' C3 C        },3 ~2 A7 I* D- ^" {
        easeOut: function(t,b,c,d){6 Q- ~1 ]& I/ V" @; X3 d* n4 }; u
            return c*((t=t/d-1)*t*t*t*t + 1) + b;6 R1 g4 Z( P- I/ z7 ]* A) |
        },5 V  i" G  g- {# R# B7 ^
        easeInOut: function(t,b,c,d){
. ?! d( `/ d* p4 s/ z            if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;5 q: r+ I% {3 W8 J2 s, }
            return c/2*((t-=2)*t*t*t*t + 2) + b;" s7 N' P3 ]" j/ }) D6 s( |
        }
4 f+ |9 U/ B. g0 V# x    },; n7 Y4 o* {5 i1 k: R
    Sine: {
6 g8 E! A% y; v4 \) U/ p2 q        easeIn: function(t,b,c,d){. b9 l# |+ h; Y+ w# D3 b8 h7 O
            return -c * Math.cos(t/d * (Math.PI/2)) + c + b;" D) W1 q" B" y8 B7 p- x5 r
        },  ~8 R3 f9 {, ?$ t4 E& S8 H6 R
        easeOut: function(t,b,c,d){
3 f* G$ u/ {8 J% Q! c& q            return c * Math.sin(t/d * (Math.PI/2)) + b;- L+ E5 p* n. K/ d% e' X
        },
' k! _* o$ y7 `% F        easeInOut: function(t,b,c,d){8 {- {6 h2 C# y7 H( Y4 ?+ D$ ?
            return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;9 n. ~/ e4 ~/ K5 a
        }
# O- A. u/ l8 @1 h: ~8 e8 `    },
/ F9 H6 ]7 {* z    Expo: {
5 y" b5 `1 @- e* v' a        easeIn: function(t,b,c,d){1 s" U, N, D0 T/ H
            return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;' r/ ~3 @- G" p5 G  r; d7 b+ p3 z. ~
        },
& x+ x4 @! L. C5 l0 U+ z, X        easeOut: function(t,b,c,d){7 b& t* n. L1 D3 S0 h1 F
            return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
* o) F. R- ]; j) x0 R3 w" t( C) e        },
. A3 q; Q  `0 h2 O% I- C        easeInOut: function(t,b,c,d){' `4 G6 T3 B  B2 \& d$ h
            if (t==0) return b;
8 \$ E" Z, e9 F! {: j            if (t==d) return b+c;& }: g! e) V" ?, o; B0 J; f! c
            if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;% X- d5 e' e1 ]( n& P3 K1 ^% R- S
            return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
6 S' R6 V4 C; m1 f4 o        }
# v; Z* g9 Y: F" Z/ L. T! X    },4 G5 D8 L8 P4 ]
    Circ: {
! I% W. E& v" Z        easeIn: function(t,b,c,d){: p( ]1 d1 |: W- k8 g8 t
            return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;1 i; n8 s8 I! b0 b1 a
        },4 C. p$ k0 V6 z1 G
        easeOut: function(t,b,c,d){
* p1 T: s& @) q9 {" R( d7 Z            return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
" @  m( t; d( |' [        },' K# t- `) _' d3 h" O2 R% Y& e
        easeInOut: function(t,b,c,d){
* D$ c3 M/ b+ k% ]1 R* o            if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;; q8 A' a4 N, @
            return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
4 p2 n1 W, d! r1 l) S0 a- M9 x        }  a! ~2 j2 t  y
    },
! |. s$ B, S8 j1 p" v    Elastic: {
1 z8 H; ~" U* e* u% y        easeIn: function(t,b,c,d,a,p){
1 O$ _; E0 t0 Q; z$ l* R; K% w            if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
' X: y4 g& r5 k3 X" P6 j6 u            if (!a || a < Math.abs(c)) { a=c; var s=p/4; }/ I. v' r% W' M2 ?5 R) E
            else var s = p/(2*Math.PI) * Math.asin (c/a);3 ~* J$ r, N. m8 s3 k% N$ H
            return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;; Z$ _. t' L$ u$ {; \+ v8 L' B, G( {
        },* E0 b. ]" T7 n+ f( n
        easeOut: function(t,b,c,d,a,p){
6 Y2 P$ C, J+ v' s5 R( I3 R& s            if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
, W9 C. _# s2 b8 j# e            if (!a || a < Math.abs(c)) { a=c; var s=p/4; }
' q8 r9 i2 V! Y            else var s = p/(2*Math.PI) * Math.asin (c/a);
3 u! B1 i# Q( H/ `/ A: w            return (a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b);
! ^, I+ H' t" X$ I        },3 a2 w1 v3 k# p6 b
        easeInOut: function(t,b,c,d,a,p){
8 ]. h8 A4 B% A            if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);4 y1 `2 |% A( y# E
            if (!a || a < Math.abs(c)) { a=c; var s=p/4; }- y' Q1 l" M$ `+ `# x
            else var s = p/(2*Math.PI) * Math.asin (c/a);
, Y. B8 ~$ O! s( L# L9 D            if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;, C3 U/ @5 F- o* I; C0 E
            return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;( t: h+ i+ L+ l5 F
        }
$ ?6 k3 g( V9 W2 i4 ]    },
+ s  Y; Q0 V1 ^    Back: {* u+ k! P5 C2 U; [* F. J
        easeIn: function(t,b,c,d,s){
, r5 J! v! f. o( [$ @+ s  @1 K            if (s == undefined) s = 1.70158;9 N% w5 U6 z! v/ d" d2 _; R
            return c*(t/=d)*t*((s+1)*t - s) + b;
( n! M9 I" z' I+ \1 M" _. W* }        },; M! d% u6 @+ l, i
        easeOut: function(t,b,c,d,s){' e7 ]  J" n2 E8 E
            if (s == undefined) s = 1.70158;
( r# j0 W3 \$ ^" U            return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;/ y" Q5 j' K8 L! @
        },' n* n4 U% K. j8 H5 o' g0 X0 n8 g
        easeInOut: function(t,b,c,d,s){
6 @* ~- m  ^9 R, F            if (s == undefined) s = 1.70158; : v7 Z. D! Y8 W7 y* a: V6 Z  i
            if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;$ a; q- R* l& h9 Y# h
            return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;  G3 ?5 G, ^# O  i$ z% }" K1 ~3 V
        }
* z3 {5 J$ ]: Q: b' W    },
( r+ ]8 U$ a$ ^6 C4 Q    Bounce: {. w' t9 N; h0 y) s$ C+ t
        easeIn: function(t,b,c,d){
7 v3 s  W9 @- A+ I$ {            return c - Tween.Bounce.easeOut(d-t, 0, c, d) + b;- E+ Z+ y3 E7 c+ o0 }" q9 m# B" k/ v
        },# P- s& ^1 {$ R9 a$ v' [8 s
        easeOut: function(t,b,c,d){
4 o& ]; H3 o  K+ l& K            if ((t/=d) < (1/2.75)) {$ q8 |+ K( u, E( s
                return c*(7.5625*t*t) + b;, L1 J- \# L0 ~
            } else if (t < (2/2.75)) {! n; }/ k( H) E9 t+ x' N. J5 A
                return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;, l* L7 A2 c; I
            } else if (t < (2.5/2.75)) {. L# l! p" l4 {( `' k1 d
                return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;2 n( F4 z' }. q
            } else {% ~, a4 R" G! ?+ }+ q' ?, w
                return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
$ v3 H: l3 X7 e; R            }
. C6 D. ?( n* K7 T* @% Y' S( ?' H        },
1 V7 f* ~# J6 J1 _* e# C  Q1 X( U        easeInOut: function(t,b,c,d){3 ?" J! B) S( x! u1 z; y, }/ q1 F, g
            if (t < d/2) return Tween.Bounce.easeIn(t*2, 0, c, d) * .5 + b;+ M3 R/ L9 B& X
            else return Tween.Bounce.easeOut(t*2-d, 0, c, d) * .5 + c*.5 + b;
  Z+ {8 p7 v# f1 W0 h' k        }' x) {2 V2 B2 Z# b; o2 c
    }( a& z' s% e% n" O5 Y1 Y+ I$ ^
}[/mw_shl_code]; `  v3 z6 R8 ~3 _2 x
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了