基于时间轴的动画

package com.funct
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.utils.getTimer;

    public class TimeBased extends Sprite
    {
        private var ball:Ball;
        private var vx:Number;
        private var vy:Number;
        private var bounce:Number=-0.7;
        private var time:Number;

        public function TimeBased()
        {
            init();
        }

        private function init():void
        {
            stage.frameRate=100;
            ball=new Ball();
            ball.x=stage.stageWidth / 2;
            ball.y=stage.stageHeight / 2;
            vx=300;
            vy=-300;
            addChild(ball);
            time=getTimer();
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
        }

        private function onEnterFrame(event:Event):void
        {
            var elapsed:Number=getTimer() - time;
            time=getTimer();
            ball.x+=vx * elapsed / 1000;
            ball.y+=vy * elapsed / 1000;
            var left:Number=0;
            var right:Number=stage.stageWidth;
            var top:Number=0;
            var bottom:Number=stage.stageHeight;
            if (ball.x + ball.radius > right)
            {
                ball.x=right - ball.radius;
                vx*=bounce;
            }
            else if (ball.x - ball.radius < left)
            {
                ball.x=left + ball.radius;
                vx*=bounce;
            }
            if (ball.y + ball.radius > bottom)
            {
                ball.y=bottom - ball.radius;
                vy*=bounce;
            }
            else if (ball.y - ball.radius < top)
            {
                ball.y=top + ball.radius;
                vy*=bounce;
            }
        }
    }
}
posted @ 2012-04-17 09:34  ndljava  阅读(221)  评论(0编辑  收藏  举报