缓动原理及应用(动画编程深入)

也许我们学了很久也学了很多东西,但是不看这方面的知识,还真不知道什么叫缓动。要讲概念是很简单的,关键是你能否运用得上,并恰如其分的让它在适当的应用出现,这才是 难点。废话少说,下面开讲:

     缓动就是这样一种运动,我还是先不讲概念,先看几种情况的,比如如果有心人也许会看到有人做过鼠标跟随,当鼠标移动的时候,有一个东西朝着鼠标行进,当鼠标的位置相隔越远,哪个物体移动的速度就越快,当靠近的时候速度就变慢了并直到为零,但永远达不到零就是无限接近于零。我现在就要从刚才上面哪些描述中总结出缓动的原理及概念,其实概念跟原理是一样的,知道了概念就知道了原理。

缓动就是物体的速度与到达目标的距离成正比这样的一个运动就叫缓动。这也是原理。这里要注意两个参数,目标距离S,物体速度V,物体当前的位置S0,哪么就有V=K(S-S0);K是正比因子。



先到这里,未完待续,下面会讲到具体编程及应用。会给出全部源代码。

国庆上来接着写*********************************

本原理涉及到的文档类及要用到的类:一个文档类和一个小球类(这个在前面的弹性运动中已经给出),不清楚的就回过头去查看。

下面是文档类Demo3.as:

pacakge {

    import flash.display.Sprite;

    public class Demo3 extends Sprite{

            private var tx:Number=50;

            private var ty:Number=50;//目标点位置;

            private var ball:Ball;//目标对像;

            private var vx:Number=0;

            private var vy:Number=0;

            private var easing:Number=.5;

           

            public Demo3(){

                    init();

                }

            private init(){

                ball=new Ball();

                    ball.x=stageWidth/2;

                    ball.y=stageHeight/2;

                    this.addChild(ball);
                    stage.addEevntListener(Event.ENTER_FRAME,onEnterFrame);

                }

            private onEnterFrame(evt:Event){

                    var dx:Number=ball.x-tx;

                    var dy:Number=ball.y-ty;

                    vx=dx*easing;//easing为正比因子,可由自己定义;

                    vy=dy*easing;

                    ball.x+=vx;

                    ball.y+=vy;//到时就结束,祝各位成功,

                    if(ball.x==tx){

                    ball.x=stageWidth/2;

                    ball.y=stageHeight/2;

                            }//用这个条件语句的作用主要是为了使动画不停地的作缓动;

                }

        }

}

谢谢大家!!!copyright   zzjwd!!

PS:最近做的一个找荐游戏演示地址:http://www.wo-book.com/zhaoca.swf


猜你喜欢

转载自26252426.iteye.com/blog/1193452