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 1737 0

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

admin 楼主

2020-2-6 16:28:24

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

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

x

  `$ l, ]7 v: z5 q5 L3 t, h0 Q5 D, F, B' N1 L: |' j) E/ r3 }( A
" Z3 l# p+ @  o" y
动画库tween.js
+ B& U$ A, u7 a" Q1 C- y: j+ d
3 m8 k1 i# ~, a1 }4 e3 E相关资料 http://robertpenner.com/easing/
3 ]3 l7 g" D. ?5 T* ~9 |) m- a7 e& V  Z; q4 K( R
2 r7 V) }! C+ L! h, z1 G
Linear:无缓动效果;; Q& S; O% D5 c: l7 U/ f# c
Quadratic:二次方的缓动(t^2);
$ H/ u( Z! Z7 P0 kCubic:三次方的缓动(t^3);3 y+ Z; m- @* q# _
Quartic:四次方的缓动(t^4);
6 O6 m) }, l0 I: d4 ^Quintic:五次方的缓动(t^5);
7 \2 e9 v" O! \. t. [! QSinusoidal:正弦曲线的缓动(sin(t));# A% F+ G! x, h) R& ?5 l  b7 F% s
Exponential:指数曲线的缓动(2^t);
0 u1 E% v3 ~) o; \% P: YCircular:圆形曲线的缓动(sqrt(1-t^2));: I# ^+ s5 [- [% r' S: T8 ]
Elastic:指数衰减的正弦曲线缓动;/ W6 C  K4 [' H' c9 I- ^3 p( d) W
Back:超过范围的三次方缓动((s+1)*t^3 - s*t^2);6 N6 B6 _' }; c0 d( w
Bounce:指数衰减的反弹缓动。8 H! ]2 l! j+ b$ a5 F( b
ps:以上都是自己的烂翻译,希望各位修正。9 z6 K4 y' Z" ?( F$ t

0 c% W$ U- `9 ^6 v& D每个效果都分三个缓动方式(方法),分别是:; Q6 X  S  q4 R: h9 X, E
easeIn:从0开始加速的缓动;
5 s4 v# D: n  E' C0 LeaseOut:减速到0的缓动;
- ?! i4 k/ k9 Q5 \" jeaseInOut:前半段从0开始加速,后半段减速到0的缓动。
4 ?* i- c$ x' p+ V其中Linear是无缓动效果,没有以上效果。$ u% y6 \* r  q' I) d/ {# x% `
, }3 F  _3 a6 h$ r5 h0 M

: |) v' \+ W, p8 ?" S这是as代码,四个参数分别是:: K4 C  p- u) U& m& ]+ G' a
t: current time(当前时间);
. k0 Q: x$ g! g$ J4 o# O! bb: beginning value(初始值);! e& ~  v" p7 M: M& K
c: change in value(变化量);# L' w6 s. e9 X# e
d: duration(持续时间)。* m; [4 B7 g( k- }/ j8 @8 s
ps:Elastic和Back有其他可选参数,里面都有说明。
8 m# U" ]+ H$ A
: i* b* k/ B( ?- F# B  |0 o, ^那如何在js中利用这些算法呢?可以看到,虽然是as代码,但里面的程序是可以直接放在js里使用的。) {, v/ P6 X: D' [9 S
我们可以定义一个类,把它这部分放在里面:" I/ I  i3 K1 b% @. i! K
/ R, E8 O/ O" ]
. }( T& f9 m, a& N- s* T- L

* E  t8 @' Q3 r[mw_shl_code=javascript,true]var Tween = {& u' r2 K( Z: _, o1 L
    Linear: function(t,b,c,d){ return c*t/d + b; },
9 v! T/ ?2 ]+ o7 N" D3 s    Quad: {. A; [5 W8 T; `9 ^5 d) a; s
        easeIn: function(t,b,c,d){: m/ O1 x$ v: K- r/ p2 k
            return c*(t/=d)*t + b;  H  h/ [4 a! s9 k* ?& h
        },
) ~% k" @9 Z& g. M! m        easeOut: function(t,b,c,d){1 S" ?4 [* t5 Y% V3 d, b/ i
            return -c *(t/=d)*(t-2) + b;
6 f" n: L2 P& u- \1 ~3 X  x- q9 h4 M        },  k/ c" i* s/ V5 L
        easeInOut: function(t,b,c,d){
' `) o/ Z) W) L7 G            if ((t/=d/2) < 1) return c/2*t*t + b;. ~$ N% W  i3 O* q
            return -c/2 * ((--t)*(t-2) - 1) + b;' k8 v4 {7 x8 x5 R
        }
- W+ g, q+ T9 G: o# R# T# e) B$ f    },
' X: B7 h/ i) U* O2 m0 w+ N( i    Cubic: {" ?: _9 |1 A5 G
        easeIn: function(t,b,c,d){
6 o% ~9 \6 O7 }8 D            return c*(t/=d)*t*t + b;
: M! G/ Z0 F7 \$ [4 W5 N* k+ B        },
' R+ o. d! f) T$ h6 ^* U        easeOut: function(t,b,c,d){+ Q5 O7 J* J# z! P6 L
            return c*((t=t/d-1)*t*t + 1) + b;* {2 r& F; A2 p4 v! H( T- D
        },
. W" u* B* M/ O. w& ?% o8 z% x$ |        easeInOut: function(t,b,c,d){+ X7 X( J, b! Z! u* C
            if ((t/=d/2) < 1) return c/2*t*t*t + b;
9 r+ K% m. ?' c; E" q! F. O% O            return c/2*((t-=2)*t*t + 2) + b;
8 v) e+ C# _+ ~+ e" M        }$ F6 h* n* \! R, |' j* J8 D9 L
    },6 L$ R4 ^- @/ x* p& f8 Z, P
    Quart: {
2 C6 P' R. Q# h! `1 ^1 h. w        easeIn: function(t,b,c,d){
! g# q  z0 s" t; h- G            return c*(t/=d)*t*t*t + b;7 [0 b( [; e; B; G1 C
        },
* ?7 C" b3 M* ]0 l  d. w        easeOut: function(t,b,c,d){0 }, u6 w# w4 Z0 D
            return -c * ((t=t/d-1)*t*t*t - 1) + b;
4 S( E% ]& m! x1 s! Q8 X        },
6 S4 `/ ~) Q5 o7 j, Y# a8 x) H' J5 G        easeInOut: function(t,b,c,d){
" b. R7 Q  l6 p8 h- G$ @- |            if ((t/=d/2) < 1) return c/2*t*t*t*t + b;- r& X- E- l6 x: {! E! g
            return -c/2 * ((t-=2)*t*t*t - 2) + b;% D# Y8 M9 I* ^0 {
        }: R6 B5 u9 }: c! ?7 J
    },1 z# B7 M; ?9 f- q/ v
    Quint: {
- ]2 p! k' x; R$ @        easeIn: function(t,b,c,d){2 ]$ p& S& \/ P
            return c*(t/=d)*t*t*t*t + b;9 v) O! `' [/ e  |
        },
$ M+ `' ]! P& ?& C8 E# V2 I        easeOut: function(t,b,c,d){/ @! R! X2 E3 w+ B
            return c*((t=t/d-1)*t*t*t*t + 1) + b;6 i- J" r" n- j0 p
        },
1 P; I: V4 Z2 y8 u0 c( y$ Y        easeInOut: function(t,b,c,d){
/ C. I. B8 G$ w1 B            if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;3 T! g7 W8 m- S, ^
            return c/2*((t-=2)*t*t*t*t + 2) + b;* N* {. u" ]* }3 o
        }
+ _' J/ ]. Y  p2 V    },
8 z3 a# ~2 h" J7 s: d' I+ T    Sine: {
4 Z' L. T  `! k0 c) t: k+ a        easeIn: function(t,b,c,d){
' c  t. V$ ]. I) h* I0 t            return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
4 Q$ o' k6 Q0 U  r/ g        },
" q" V6 ^: N' [: n' ~        easeOut: function(t,b,c,d){
/ u! U2 L' W5 _9 ]7 ?2 J% b( C/ k; P            return c * Math.sin(t/d * (Math.PI/2)) + b;
" G& b7 H" y* J- b        },
3 `7 z: x. p1 y* E' k: P        easeInOut: function(t,b,c,d){
/ h# g$ M/ @9 \            return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
8 h: k2 H; R8 @6 v5 [3 _; O        }
+ ^9 b" ^% @$ q) Q    },7 B0 L+ M/ E7 T( S; {1 C# B
    Expo: {
& O5 [/ b6 U* ~2 o$ U        easeIn: function(t,b,c,d){8 O+ }2 v9 j) y, ]6 H
            return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;; m3 {, x' ]: ?! k$ T
        },+ {: I: ^$ K5 t
        easeOut: function(t,b,c,d){
6 v+ o$ k, M+ K. O& R( e+ f            return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;* K+ z( T6 R8 w. q8 @; c, i
        },! ]$ X) s' h0 E5 p; p3 k, \
        easeInOut: function(t,b,c,d){1 h7 ]+ V8 B" Q# H( e; _
            if (t==0) return b;
6 U! R# Y% A4 H! }            if (t==d) return b+c;
# ?% `- g! L( l9 J            if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
! s) ^* c' O* b8 V! X  {! T            return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
. G$ {& Y! s, {        }
6 O' e7 }* a& V! P5 C    },
- B. ~8 g, A% H    Circ: {( \" C7 S% q; Q# S
        easeIn: function(t,b,c,d){$ a5 H6 x2 T' a: h
            return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;' P% D  V- U9 l4 D& W$ c4 D- W4 B
        },* O& K9 R/ C$ W: k# }
        easeOut: function(t,b,c,d){
2 J8 r) D3 g3 }" C! E            return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
! t, X% U5 l) y# h6 f        },' {5 Q8 a# T$ O0 `5 M
        easeInOut: function(t,b,c,d){1 b9 B$ \$ O" d- ^) Q* n
            if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
2 H: v9 ]. A% y1 g5 p% p            return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
& C. T% G; R/ f8 G, U        }3 I" p( U( f. X; g$ l3 @
    },# H; i) X2 F: O. b- T
    Elastic: {
2 p8 r1 J  \4 [/ ?) W9 ~        easeIn: function(t,b,c,d,a,p){
* V3 D3 q6 W, m3 x; [8 u            if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;' z$ G. p3 ^2 C
            if (!a || a < Math.abs(c)) { a=c; var s=p/4; }
" s8 b3 p* T! E% x            else var s = p/(2*Math.PI) * Math.asin (c/a);
3 Q; n1 p* Q+ y1 ~: G$ A; ]: X/ w+ {            return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;! w" B4 X3 q/ n8 l& F$ e
        },, s2 c! {# p! a! m5 Q6 k7 n* R) `8 [
        easeOut: function(t,b,c,d,a,p){$ _8 u/ T9 c* b6 \  r. ~8 C4 `( t
            if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;1 H; N5 r( ~2 V8 V( a5 ]3 v
            if (!a || a < Math.abs(c)) { a=c; var s=p/4; }, f& M4 M: W6 b+ D
            else var s = p/(2*Math.PI) * Math.asin (c/a);3 }8 J7 u3 @1 I* D: o! z2 a" _5 P
            return (a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b);  q( c. J9 S; _+ ]8 A
        },' [$ a# \8 H- n7 R
        easeInOut: function(t,b,c,d,a,p){# v# g9 \4 A5 s7 c; c4 z
            if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);  m; P. u7 `! E* T8 A/ P
            if (!a || a < Math.abs(c)) { a=c; var s=p/4; }2 ]' c5 a2 b9 p4 w$ e
            else var s = p/(2*Math.PI) * Math.asin (c/a);' ~: W# d- O) a( _1 c) w$ x
            if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
" v+ J9 c9 F/ W. R- z8 j            return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
$ T, C1 a3 z# I  {: \6 i        }
3 k0 |1 ?# S2 N% L" C" ]+ A    },
" m8 F4 m5 }9 V+ B# H    Back: {4 @7 {6 d- y1 R3 W
        easeIn: function(t,b,c,d,s){$ T& Q; l. ?: X! ]" @$ Y' ~
            if (s == undefined) s = 1.70158;5 a- w& k  x& I- Y- h$ D
            return c*(t/=d)*t*((s+1)*t - s) + b;4 a- G+ ^, ]. v2 }
        },
/ y# |3 i9 w6 q4 R: S        easeOut: function(t,b,c,d,s){
' |6 W! P; t' b  a, m' _            if (s == undefined) s = 1.70158;
' F# w) ~2 {: |, `5 f            return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;5 i2 W. L+ B+ E& d7 @4 k5 M
        },
: M! x4 R1 \9 q$ P* s        easeInOut: function(t,b,c,d,s){- o7 i% a0 x" n3 H0 ~/ H
            if (s == undefined) s = 1.70158;
1 h* u; j2 [# E) i( {, Z$ A) U2 P  \            if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;% d: `" B6 V! {  W, _. Y
            return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;& Q- u( A' A( O
        }8 r) P- y8 r0 t* B" Q
    },3 L/ M: U) s1 y5 g- n  J% {
    Bounce: {4 N; I' b  e0 g1 m+ ]
        easeIn: function(t,b,c,d){
& o8 z9 _+ ]7 R0 M" u            return c - Tween.Bounce.easeOut(d-t, 0, c, d) + b;
4 r" e6 \, ?: {8 n$ u5 ^! k& N        },
: w% x6 A) Y1 v% M1 v- [        easeOut: function(t,b,c,d){
9 W3 \3 l- }( A1 m' c% f$ c8 V            if ((t/=d) < (1/2.75)) {
" m$ r9 ^( Q2 K                return c*(7.5625*t*t) + b;% N/ A: [; y4 Y# \4 k
            } else if (t < (2/2.75)) {
# _/ V7 |4 [/ g* F* y2 `                return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;  H0 B: u7 Y4 ]! N0 L  v
            } else if (t < (2.5/2.75)) {
7 Z! u: x! K9 O7 d  k                return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;+ T, j5 z# u; R* ?
            } else {
- J8 U: Q& p) w8 J( T2 o                return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
9 Q( e* ~7 w) [            }. S* K) i0 H7 j* g
        },
6 t+ I- G( b: g! C6 K        easeInOut: function(t,b,c,d){
/ a9 I/ Z* Q+ t$ `            if (t < d/2) return Tween.Bounce.easeIn(t*2, 0, c, d) * .5 + b;
! s+ x4 e7 O( N2 K# V7 m( H% b- {+ w7 U+ r            else return Tween.Bounce.easeOut(t*2-d, 0, c, d) * .5 + c*.5 + b;
7 f+ l4 Z! m0 N4 g5 z        }3 H# x0 S& H# v" b! i4 t$ I( v
    }
; W5 l5 |% s. y9 A4 H: m( ?}[/mw_shl_code]
3 U+ M; S) p: S
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了