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

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

admin 楼主

2020-2-6 16:28:24

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

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

x
  I: I" W' P, c7 Y& U
1 \( q( G& H" Z" b) q( t& V

* T$ q. y: J0 j  N- B8 n; E6 o; n动画库tween.js4 f9 s& r4 D' k& e8 E9 s8 r

) B. q: g7 }( {+ U# a相关资料 http://robertpenner.com/easing/
" v, K4 r: p* q8 F, V" M
. X3 z7 y5 ^; g# v* \0 M! c) ^( k" Z0 J
Linear:无缓动效果;; F2 J( M# @! p; d" [! H
Quadratic:二次方的缓动(t^2);
! y9 {# \* _& G: Q6 Q5 w- H7 ?Cubic:三次方的缓动(t^3);; s2 w& i, i1 ^. ^8 m
Quartic:四次方的缓动(t^4);: Z* Y  t) M4 o2 |" h
Quintic:五次方的缓动(t^5);& e" H) _  ^$ v% ^
Sinusoidal:正弦曲线的缓动(sin(t));
  c& [4 |. v) _* S4 D9 N' SExponential:指数曲线的缓动(2^t);, v  D/ B! ]4 }. X! \% z/ p3 t
Circular:圆形曲线的缓动(sqrt(1-t^2));# W+ t/ C& ?% F3 V( a0 a
Elastic:指数衰减的正弦曲线缓动;
8 t+ S' V2 k, s8 V) RBack:超过范围的三次方缓动((s+1)*t^3 - s*t^2);
* A2 r% s' w! b/ |" G. t' ZBounce:指数衰减的反弹缓动。+ t* k: E, ~- q7 n' m7 N
ps:以上都是自己的烂翻译,希望各位修正。/ v* U! ?- _( }  S3 x7 q
3 [# u* W, N% g
每个效果都分三个缓动方式(方法),分别是:
; U* b2 d( B! v6 ]" jeaseIn:从0开始加速的缓动;
9 v& M5 o0 j! v; t3 [. s! qeaseOut:减速到0的缓动;5 F& S! \7 O9 u* q3 O5 n: G$ m$ A
easeInOut:前半段从0开始加速,后半段减速到0的缓动。
+ }' X6 ?3 i  @) {8 `- L/ s其中Linear是无缓动效果,没有以上效果。/ ^; K( W2 Y) {" G

5 S' U" H% M$ i

1 D* l, U, M; x( N这是as代码,四个参数分别是:8 R9 t% N/ z  c0 j/ D! N, \
t: current time(当前时间);
5 a5 ?( i* v4 t+ Z4 A' u. N1 Zb: beginning value(初始值);
8 X3 s; G/ }7 y* h( w1 h6 r+ B, lc: change in value(变化量);
' l% w+ [6 F$ ^: r3 Nd: duration(持续时间)。; W( {& `9 J- j0 f2 C/ j# s/ p' m
ps:Elastic和Back有其他可选参数,里面都有说明。: t& S$ A+ R$ e( |3 q5 n, C  c# ?8 w

. C, G9 d# g" D8 U! x  @' g, z9 |& P那如何在js中利用这些算法呢?可以看到,虽然是as代码,但里面的程序是可以直接放在js里使用的。
# V* B" h6 }/ c+ b; |: @我们可以定义一个类,把它这部分放在里面:; B& @) M8 M. B5 q" \* b. s$ p! O
7 C8 i" `, g0 U4 L4 r- l; z
$ _9 j+ \0 R( h" N4 F

6 ^) e) w/ k9 ]! S/ s, S& u[mw_shl_code=javascript,true]var Tween = {
$ b! i$ J$ A# d8 }    Linear: function(t,b,c,d){ return c*t/d + b; },4 g( F5 s+ m1 G1 j9 U
    Quad: {
- o5 Q9 L' [% N        easeIn: function(t,b,c,d){
0 A9 E! R/ K" u& v8 F% d- s4 S            return c*(t/=d)*t + b;2 {4 Y' J! O( p- e7 K5 Y
        },: K$ F( ]) t8 z3 T# S  {5 i
        easeOut: function(t,b,c,d){; _5 N4 i0 Z' s6 |8 }! x
            return -c *(t/=d)*(t-2) + b;' v' t8 A) x5 K9 G9 B1 W; s# s
        },; P$ r5 z  s9 u: V2 x0 m
        easeInOut: function(t,b,c,d){3 ]* M8 l3 O; }( ~9 o4 J
            if ((t/=d/2) < 1) return c/2*t*t + b;1 _' Z4 `1 e% v+ ^7 h6 S
            return -c/2 * ((--t)*(t-2) - 1) + b;6 S* O3 F4 B. ?" W
        }
: e! e% \( }: v' A; q    },
: j1 u2 @, n  s' N" s    Cubic: {$ K! `8 [6 }4 _8 Q) L
        easeIn: function(t,b,c,d){
+ ]1 b( ^% Z' ^+ I) V7 Q1 O/ i            return c*(t/=d)*t*t + b;
; q, V8 _8 D- s  r7 l        },
5 u9 w$ P( C+ G8 s1 \        easeOut: function(t,b,c,d){7 ]0 w: x3 ?8 W5 Y/ @& F
            return c*((t=t/d-1)*t*t + 1) + b;
$ c; _1 T$ [) K% \8 ]        },
/ q8 S9 z8 t: d. e        easeInOut: function(t,b,c,d){
  g$ n/ |% ~/ U6 l: y2 S/ K            if ((t/=d/2) < 1) return c/2*t*t*t + b;. J/ P9 r( M# j2 ]
            return c/2*((t-=2)*t*t + 2) + b;
6 ?* C  o# a3 ?# N+ [        }! ~' ^* k5 [7 t3 h7 _
    },. ?; p2 F: J1 S% T+ L7 Z
    Quart: {* Y5 h3 G6 R1 t6 {' H6 k8 _+ t' n
        easeIn: function(t,b,c,d){
! J' C% {; N: e: t2 p            return c*(t/=d)*t*t*t + b;
% l4 x7 Y$ c* Y8 ]0 \; {) b1 X# y        },
& V5 o# |7 e, F& L( \- j        easeOut: function(t,b,c,d){$ Q6 _; O- V7 a! ?$ `' R1 w
            return -c * ((t=t/d-1)*t*t*t - 1) + b;/ b- o9 g5 u+ l, R+ g: |
        },6 K9 |3 i# d/ |. T' o4 t+ a
        easeInOut: function(t,b,c,d){
2 s" k9 n- Z' R! {            if ((t/=d/2) < 1) return c/2*t*t*t*t + b;8 y+ ]4 T" v) c# q
            return -c/2 * ((t-=2)*t*t*t - 2) + b;8 {, c, F( x: @$ H1 [. m/ a5 _$ A7 ]" [
        }
7 W5 E  }% Y. T5 ]$ `& d, H7 Q    },& r1 [0 a! U3 J" A1 a
    Quint: {( B% y  i. a  }9 E; u0 @
        easeIn: function(t,b,c,d){( e: v: q% m3 H0 a# o) c$ e- i
            return c*(t/=d)*t*t*t*t + b;, d0 q7 Y6 N+ b) E
        },1 B2 E3 \5 J( |1 Z  a/ ]# l
        easeOut: function(t,b,c,d){
: _: f/ b- _5 t; @* h5 |            return c*((t=t/d-1)*t*t*t*t + 1) + b;
5 s7 ^. I& @. A1 d        },
% u. h8 ^& w4 I% ^: n' S& c# v8 l        easeInOut: function(t,b,c,d){  {" h8 `, C2 w0 k- h. M
            if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;1 s4 |# ]6 V0 c: T% y& h, ~1 b! M
            return c/2*((t-=2)*t*t*t*t + 2) + b;
$ A2 M3 z. P9 H( W2 ^/ |7 Z% @        }
7 k& w) u& q* t    },& z. g& K7 j& z# S  _
    Sine: {9 \8 o7 o4 i; ~. ]9 |* ~" y' M
        easeIn: function(t,b,c,d){+ a/ N$ [, n2 O( {! S# V
            return -c * Math.cos(t/d * (Math.PI/2)) + c + b;9 t/ {; Z/ X( L6 n% |9 b7 M- o9 d
        },
5 `. ~$ ~7 r: e: y        easeOut: function(t,b,c,d){
; `* H" Z3 m, B- h6 R            return c * Math.sin(t/d * (Math.PI/2)) + b;5 Y5 Y' |& a6 s* H/ R
        },. g& x: ~% h- m  I1 Q5 J& u
        easeInOut: function(t,b,c,d){
  p& s* z# {, s            return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;: l, ]; k* J5 j) q1 ~, n
        }/ q+ l% `8 ~0 ^. g6 C
    },8 r/ s) e9 v. }8 V
    Expo: {, g0 `, a9 a: ^: C: R! p( F/ J
        easeIn: function(t,b,c,d){' x' t7 w: P% V, Q/ h5 p6 w
            return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;/ q) r6 p5 c' k" p* Q7 U0 S+ d; i
        },7 u7 `: v# Q% v
        easeOut: function(t,b,c,d){
0 H5 j$ D- k" v8 x& i1 s            return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
$ Y! t. q( A4 p9 c: c$ Y        },9 z: }4 U# |5 Q. |
        easeInOut: function(t,b,c,d){. H7 M( L4 H2 y
            if (t==0) return b;
3 R; V" X- u) q7 V( W3 s            if (t==d) return b+c;5 b: @1 R  g5 ?0 _
            if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;, a& v8 G: n* f  _+ n
            return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;, P7 x' T; _6 h2 H; H
        }
% k, r+ R& u, F    },& \) v% m3 p1 @' |; c! _6 x
    Circ: {8 x# {* t0 J( S
        easeIn: function(t,b,c,d){! P. J2 f: c% q6 r% B, m
            return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
4 i# q, x0 F3 D: T        },
7 ~. p. O' D5 o/ S( a5 e- ^. r        easeOut: function(t,b,c,d){
: |6 N7 |! H- u* T' u, W" k0 p$ U            return c * Math.sqrt(1 - (t=t/d-1)*t) + b;& y- O; x; R4 c
        },: B7 V" R7 T9 G* {2 T( |
        easeInOut: function(t,b,c,d){' k2 T7 f4 a* ^% w- h
            if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
- y: L+ ]* Y  k; G8 G/ t+ k            return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
/ B! L1 J1 _# [( w        }
/ \) m8 v8 ^" w5 x' w    },) }6 x( I! x% ?5 O7 g6 b
    Elastic: {
3 }- y; r4 i7 [2 s; d4 B4 h        easeIn: function(t,b,c,d,a,p){
, ^5 Q; ^$ g; C! U" @% ^$ Z            if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;& Q( ]* _5 y1 V
            if (!a || a < Math.abs(c)) { a=c; var s=p/4; }
" E' E9 `4 |9 v            else var s = p/(2*Math.PI) * Math.asin (c/a);
( k+ C* a- {: F6 ^# J9 T" n            return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;- u8 N$ V4 M' g# ~! o
        },
- D9 h3 F% [7 E" N        easeOut: function(t,b,c,d,a,p){/ s9 y# H9 w7 c: z6 T) s* ^4 S
            if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;! C* D$ {( w. l& ?% U/ O( s: q
            if (!a || a < Math.abs(c)) { a=c; var s=p/4; }
! w7 H8 B: b4 G" q3 F# f$ ~' t            else var s = p/(2*Math.PI) * Math.asin (c/a);' P. t; o8 b* s! ?! O
            return (a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b);4 f2 \8 B7 g& y3 S+ C( D
        },
  C, m( @7 b5 e5 B+ @9 |7 @* d+ B        easeInOut: function(t,b,c,d,a,p){/ Y2 N  P; Q% a; a1 w
            if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);( K0 p6 B: Q4 c/ T+ t; B
            if (!a || a < Math.abs(c)) { a=c; var s=p/4; }
5 W$ N$ N6 ~7 ?* p9 `4 g. ~9 N            else var s = p/(2*Math.PI) * Math.asin (c/a);2 b; c8 h% S( E: f
            if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;4 s9 k. t6 z* M4 D7 ?4 b
            return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;$ E) U4 g* ^& c" N
        }
( J7 b% P2 [- ^/ w$ o    },
5 R+ c; [- q/ Y2 _    Back: {
. T3 W8 r1 p$ p- m2 r        easeIn: function(t,b,c,d,s){
) d9 k3 b8 Z% q6 a1 }( K            if (s == undefined) s = 1.70158;
9 i; Y' y' u$ G/ q6 ]4 C6 K4 V            return c*(t/=d)*t*((s+1)*t - s) + b;
2 w! Y; h' g, M0 a% v3 U& B5 Y        },
( U) R. `' g7 i        easeOut: function(t,b,c,d,s){
+ U4 c1 ~+ [1 A4 `' w* V            if (s == undefined) s = 1.70158;$ [4 i* S" }/ ]6 g/ k8 }
            return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
% {8 G/ ^7 P% n% e        },
! r; i6 y5 R6 x/ ~        easeInOut: function(t,b,c,d,s){( Y0 x# e2 W0 L7 [8 [& o% y9 d. x
            if (s == undefined) s = 1.70158; $ Q' E7 x/ ?- H/ _
            if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
- t- w+ y% P. a+ G% V; s            return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;' b# `& l) v2 d( ]( i
        }: O2 C8 x- F) f# A& }6 c
    },+ G" f# x+ i0 b: [5 X. d; s5 t8 d
    Bounce: {
! S% L' z$ k4 A9 j% J! _, h        easeIn: function(t,b,c,d){
8 R! i0 z0 y& j* x            return c - Tween.Bounce.easeOut(d-t, 0, c, d) + b;
3 s2 n3 B+ Q% M) ]2 w        },' r5 u. J9 L( L% ]/ D
        easeOut: function(t,b,c,d){
. y" @! W* o# F) Q1 Z0 f8 u3 M+ k! k            if ((t/=d) < (1/2.75)) {% @6 R" ^, t2 C7 K4 G+ |# W
                return c*(7.5625*t*t) + b;8 u9 P( r, A# ^7 |4 b
            } else if (t < (2/2.75)) {
" o+ a8 A7 z: W: k                return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
8 n5 s8 h# h* G) v4 X            } else if (t < (2.5/2.75)) {0 ?. T. o" F( a* H9 Q
                return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
" C6 o2 N, t5 H5 A' l4 X) _0 D            } else {
1 Q1 Z+ t: }: k: r                return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;7 w. y5 N" D: `; _1 D, o' i
            }# G+ X8 D1 G3 X  \
        },
5 ?: o7 ]  P4 L' j) I+ M! M) n        easeInOut: function(t,b,c,d){* w  t: ]5 P, {# ?) {
            if (t < d/2) return Tween.Bounce.easeIn(t*2, 0, c, d) * .5 + b;2 q! \' |2 t% Z, C8 H
            else return Tween.Bounce.easeOut(t*2-d, 0, c, d) * .5 + c*.5 + b;9 H, p8 n0 d2 l; |0 U4 d- ?
        }. Y, t/ d2 w9 W7 T
    }
' E" G4 I! P& O% k' j}[/mw_shl_code]
# P# i1 x( O: {3 d: v9 H' C; W
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了