资讯·论坛·笑话大全·QQ表情·设为首页
发新话题
打印

[Flash] 速度和加速度在flash中的描述

速度和加速度在flash中的描述

在flash中,我们习惯做的补间动画,如果不加缓动,在前后两帧中改变元件的位置,就可以看到元件的移动动画,具体说是元件匀速运动的动画。
4 v! j2 I4 Y, G8 ]6 A: dwww.520diannao.com打造最好的电脑自学交流论坛% R$ {2 s, ]) z3 _, ~
在flash中,是将元件在每帧设置一个新的位置来实现动画的,如让一个元件从位置0运动到位置10,设flash在每帧设置元件坐标相差为1,那么在第一帧时元件在位置0,第二帧时在位置1,第三帧时在位置2......这样就看到元件的匀速运动了,这个就是坐标差就是速度了。下面来看看用代码来实现的,物体匀速移动,设舞台上有一小球ball_mc,空剪辑ctrl_mc:打造最好的电脑自学交流论坛- H. @' K. ^, \+ n, q" S0 _
www.520diannao.com# z, t# S; u- b+ c  M
//使小球沿x轴以每帧2像素的速度匀速运动我爱电脑技术社区--打造最好的电脑技术自学交流平台, q, |' Q1 u$ d7 D. h. b
//定义x方向的速度
8 f& }' Z" a8 A- }电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站var vx = 2;
' n: Y* V% l6 E- D打造最好的电脑自学交流论坛ctrl_mc.onEnterFrame = function(){
. s" d2 u0 B* Q) _! H打造最好的电脑自学交流论坛    ball_mc._x+=vx;我爱电脑技术社区--打造最好的电脑技术自学交流平台' C0 H8 m$ M% K0 L" E0 k
}
9 ]3 j. l8 ~& m. _: R1 C) |. b( q打造最好的电脑自学交流论坛//使小球沿y轴以每帧2像素的速度匀速运动只需将上面的_x属性换成_y属性www.520diannao.com* c" c8 p. u0 W. }0 Q0 V* t5 _- a
打造最好的电脑自学交流论坛& z9 m! Y+ n- \% f2 E
上面是给定x或者y方向的速度大小,让flash来实现物体运动,现在给定一个任意角度angle,和一个任意大小v的速度,如何让flash来实现物体的运动呢?~思路如下:我爱电脑技术社区--打造最好的电脑技术自学交流平台5 M( F) K, F/ N  I8 ]

) U: m) C0 ]4 ^+ Q" l% z电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站将速度v从角度angle方向分解到flash坐标系统的x,y方向,然后再分别将x,y方向的速度加到物体的x,y坐标上。代码如下:如果v=5,angle=30,则就是小球沿30度角的方向以每帧5个像素运动。www.520diannao.com7 m2 p1 t0 m$ K# h- ?( [5 q

$ ]/ i/ v) [( ^+ u电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站var angle:Number;
3 D& ?) Q. T( s$ W电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站var v:Number;打造最好的电脑自学交流论坛7 C2 T. V' z( ]. z, B" ^4 q. m
ctrl_mc.onEnterFrame = function(){我爱电脑技术社区--打造最好的电脑技术自学交流平台" n- d6 b* x2 R$ z- q' P4 K
    var radians = angle*Math.PI/180;
/ Q- R- t4 y4 m1 X. x9 C$ G电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站    //分解速度
7 K' Z6 D( K6 n1 v. ~; T# [( k打造最好的电脑自学交流论坛    var vx = v*Math.cos(radians);打造最好的电脑自学交流论坛. s6 M/ c1 Q* M6 c6 t
    var vy = v*Math.sin(radians);
* c( x" ?* R5 `; l我爱电脑技术社区--打造最好的电脑技术自学交流平台    ball_mc._x += vx;
1 X5 H2 [) ?) B1 A我爱电脑技术社区--打造最好的电脑技术自学交流平台    ball_mc._y += vy;我爱电脑技术社区--打造最好的电脑技术自学交流平台* D8 V3 R1 a! s! X) \
}我爱电脑技术社区--打造最好的电脑技术自学交流平台1 n5 Q- Q( h' L

' [% M2 M2 T3 o7 }2 V, G打造最好的电脑自学交流论坛电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站# s" t; L2 H" H3 m/ a$ s
现在要使物体加速运动,那又如何实现呢~如:使小球初速度为0,以加速度为2px/f*f的沿x方向运动。思路如下:
& y" L8 q# I3 ?& Q8 b我爱电脑技术社区--打造最好的电脑技术自学交流平台! {4 S( h: _) W% Y7 C* [, r2 u" [' ^
在flash中要实现加速度,可以在每帧加入一个常数到速度,这样就实现了加速度,如:
6 k9 B6 ]& v4 a/ E我爱电脑技术论坛5 L& s( X2 f) l% J- G6 M! R6 Q
v=0;
- n" l8 N2 b4 Q* k4 S/ J9 |电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站a=2;
2 J7 I1 J* C- ?" i打造最好的电脑自学交流论坛ctrl_mc.onEnterFrame = function(){我爱电脑技术社区--打造最好的电脑技术自学交流平台2 Z: H/ R- C) i- V
    v+=a;
9 @8 ]1 ?: c5 T# G! ?我爱电脑技术论坛    ball_mc._x+=v;5 w7 S- |, f  r6 G" |" J
}
* o4 v/ S! h; A  Q打造最好的电脑自学交流论坛//在y方向同理。( B0 a- n$ C# R- t1 M3 \( L3 Z
我爱电脑技术社区--打造最好的电脑技术自学交流平台" r$ D) `9 l- n  Z: R: ~
物理中我们知道,给物体施加一个力,对物体就会产生一个加速度,现在我们假设给定一个方向angle,给定一个力force(如:在30度方向上给小球施加一个10N的力),那么flash又该如何描述小球运动呢?~设小球初始速度为0;
+ {1 v, l" `4 M1 d3 B- t0 L电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站  G4 C& }9 ]& s8 r& f  w
思路:仿照速度,可以将力分解为x,y方向,分别加到x,y方向的速度,然后再将速度分别加到球的x,y方向的坐标上。! C% q6 a  J5 Y% {( V% E
var angle:Number;
. @8 U: s8 i4 Z4 l( h我爱电脑技术论坛var force:Number;
8 o/ l8 T. y6 q电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站var vx = 0;
) X1 z$ d$ r( c; ^) I我爱电脑技术论坛var vy = 0;电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站7 b- L: [" X/ L+ M
ctrl_mc.onEnterFrame = function(){我爱电脑技术社区--打造最好的电脑技术自学交流平台. i: D( i  v8 o3 ^3 A% @8 E
    var radians = angle*Math.PI/180;我爱电脑技术社区--打造最好的电脑技术自学交流平台3 x1 _/ E. I% S0 ]
    //分解力,得出x,y方向的加速度我爱电脑技术论坛' n3 k' `/ c9 N' N. D
    var ax = force*Math.cos(radians);
) r. h" k* w: I1 @我爱电脑技术论坛    var ay = force*Math.sin(radians);www.520diannao.com3 d7 S9 }1 o' Z$ K! D6 w
    //将加速度分别加入速度上打造最好的电脑自学交流论坛) n. l# H) i4 ?& [
    vx += ax;电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站/ Z5 u$ X6 P2 k9 Y% D) N
    vy += ay;
4 d8 {% `: Y, b  d! w" ^4 x我爱电脑技术社区--打造最好的电脑技术自学交流平台    //加入坐标www.520diannao.com/ A- k% O. ?2 Z2 _
    ball_mc._x += vx;* r& W" L# {2 L  f- J' ~
    ball_mc._y += vy;
8 U7 K5 h- Z; f% C& t8 K电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站}
2 V  ]& `4 A$ k4 V我爱电脑技术社区--打造最好的电脑技术自学交流平台
+ H9 n# Y) ]  k. q打造最好的电脑自学交流论坛总结:要实现物体匀速运动,只需将速度v沿x,y轴分解所得的vx,vy分别加入到物体的_x,_y属性,即:vx = v*Math.cos(angle);vy=v*Math.sin(angle);ball_mc._x+=vx;ball_mc._y+=vy;要实现物体的加速运动,只需将加速度a沿x,y轴分解所得的ax,ay分别加入到物体速度在x,y轴的分量vx,vy上,然后再将vx,vy分别加到物体的_x,_y属性,即:ax = a*Math.cos(angle);ay=a*Math.sin(angle);vx+=ax;vy+=ay;ball_mc._x+=vx;ball_mc._y+=vy;

TOP

发新话题