Flash.ActionScript.3.0动画教程_code2

/******************************************************************************/
/**    @file        FlashExample1_8.as
    @brief        FlashExample1_8 class
    @note        Copyright (C) 2010 ThinkinGall. All rights reserved.
    @author        xuyeding
    @date        2010/11/29
    @version    1.00
*******************************************************************************/
package {
    import flash.display.Bitmap;
    import flash.display.GradientType;
    import flash.display.Loader;
    import flash.display.MovieClip;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.*;
    import flash.ui.Keyboard;
    import flash.filters.BlurFilter;
    import flash.geom.Matrix;
    import flash.geom.Rectangle;
    import flash.geom.ColorTransform;
    import flash.net.URLRequest;
   
    /**
     *    FlashExample1_8 class example
     *    @class    FlashExample1_8
     */
    public class FlashExample1_8 extends MovieClip {
        private var x0:Number = 100;
        private var y0:Number = 100;
        private var x1:Number = 0;
        private var y1:Number = 0;
        private var x2:Number = 300;
        private var y2:Number = 200;
       
        private var fieldx:int = 0;
        private var fieldy:int = 0;
       
        private var targetx:int = 0;
        private var targety:int = 0;
       
        private var red:int = 0;
        private var green:int =0;
        private var blue:int = 0;
        private var redTar:int = 0;
        private var greenTar:int = 0;
        private var blueTar:int = 0;
       
        [Embed(source = "DC1.jpg")]
        private var pic:Class;
       
        /** ball instance */
        private var ball:Ball = null;
        private var arrow:Arrow = null;
        private var ballOne:Ball = null;
        private var ballTwo:Ball = null;
        private var ballOneFlag:Boolean = false;
        private var ballTwoFlag:Boolean = false;
        private var springLength:Number = 100;
       
        /* Array Ball */
        [ArrayElementType("Ball")]
        private var arrBall:Array = [];
       
        public function FlashExample1_8() {
            //initialize();
            /* -------forth chapter-start------*/
            //drawCurve();
            //loader();
            //embedAsset();
            //drawGredientLineer();
            //drawGredientRadial();
            //colorTransform();
            //filtersTest();
            /* -------forth chapter-end------*/
           
            /* -------fifth chapter-start------*/
            //velocity1();
            //velocity2();
            //acceleration();
            /* -------fifth chapter-end------*/
           
            /* ------- chapter-start------*/
            //removalBall();
            //fountain();
            /* -------sixth chapter-end------*/
           
            /* -------seventh chapter-start------*/
            //mouseEventTrace();
            //dragAndMove1();
            //throwing();
            /* -------seventh chapter-end------*/
           
            /* -------eighth chapter-start------*/
            //esaing();
            //spring();
            //chainArray();
            //offSetSpring();
            doubleSpring();
            /* -------eighth chapter-end------*/
           
        }
       
        /**
         * initialize
         */
        public function initialize():void {
        }
       
        /*--------TEST--START----------*/
        /*--------------------------------------------*/
        /**
         * doubleSpring
         */
        public function doubleSpring():void {
            ballOne = new Ball(10, 0x00FF00);
            ballTwo = new Ball(10, 0x0000FF);
            ballOne.x = Math.random() * stage.stageWidth / 2;
            ballOne.y = Math.random() * stage.stageHeight / 2;
            ballTwo.x = Math.random() * stage.stageWidth / 2;
            ballTwo.y = Math.random() * stage.stageHeight / 2;
            ballOne.bounc = 0.1;
            ballOne.friction = 0.96;
            ballTwo.bounc = 0.1;
            ballTwo.friction = 0.96;
            addChild(ballOne);
            addChild(ballTwo);
            springLength = getAFromB(ballOne.x, ballOne.y, ballTwo.x, ballTwo.y);
            ballOne.addEventListener(MouseEvent.MOUSE_DOWN, onDoubleSpringHandler, false, 0, true);
            ballTwo.addEventListener(MouseEvent.MOUSE_DOWN, onDoubleSpringHandler, false, 0, true);
            stage.addEventListener(MouseEvent.MOUSE_UP, onDoubleSpringHandler, false, 0, true);
            addEventListener(Event.ENTER_FRAME, onDoubleSpring, false, 0, true);
        }
        /**
         * doubleSpring ENTER_FRAME
         */
        public function onDoubleSpring(event:Event):void {
            if(!ballOneFlag){
                springTo(ballOne, ballTwo);
            }
            if(!ballTwoFlag){
                springTo(ballTwo, ballOne);
            }
            onDrawLine(ballOne.x, ballOne.y, ballTwo.x, ballTwo.y);
        }
        /**
         * doubleSpring MOUSE_DOWN
         */
        public function onDoubleSpringHandler(event:MouseEvent):void {
            if (event.type == MouseEvent.MOUSE_DOWN) {
                Ball(event.target).startDrag();
                if (Ball(event.target) == ballOne) {
                    ballOneFlag = true;
                }
                else if (Ball(event.target) == ballTwo) {
                    ballTwoFlag = true;
                }
            }else if (event.type == MouseEvent.MOUSE_UP) {
                ballOne.stopDrag();
                ballTwo.stopDrag();
                ballOneFlag = false;
                ballTwoFlag = false;
            }
        }
        /**
         * spring To
         */
        public function springTo(_ballA:Ball, _ballB:Ball):void {
            var angle:Number = Math.atan2(_ballA.y - _ballB.y, _ballA.x - _ballB.x)
            targetx = _ballB.x + Math.cos(angle) * springLength;
            targety = _ballB.y + Math.sin(angle) * springLength;
            _ballA.vx += (targetx - _ballA.x) * _ballA.bounc;
            _ballA.vy += (targety - _ballA.y) * _ballA.bounc;
            _ballA.vx *= _ballA.friction;
            _ballA.vy *= _ballA.friction;
            _ballA.x += _ballA.vx;
            _ballA.y += _ballA.vy;
        }
        /**
         * onSpringHandler
         */
        public function onBallDrawLineHandler(event:Event):void {
            onDrawLine(ballOne.x, ballOne.y, ballTwo.x, ballTwo.y);
        }
        /*--------------------------------------------*/
        /**
         * offSetSpring
         */
        public function offSetSpring():void {
            ball = new Ball(10, Math.random() * 0xFFFFFF);
            ball.x = stage.stageWidth/2;
            ball.y = stage.stageHeight/2;
            fieldx = 100;
            fieldy = 100;
            ball.bounc = 0.2;
            ball.friction = 0.9;
            addChild(ball);
            springLength = getAFromB(ball.x, fieldx, ball.y, fieldy);
            ball.addEventListener(MouseEvent.MOUSE_DOWN, onOffSetSpringHandler, false, 0, true);
            onDrawLine(fieldx, fieldy, ball.x, ball.y);
        }
        /**
         * offSetSpring ENTER_FRAME
         */
        public function onOffSetSpring(event:Event):void {
            var angle:Number = Math.atan2(ball.y - fieldy, ball.x - fieldx)
            targetx = fieldx + Math.cos(angle) * springLength;
            targety = fieldy + Math.sin(angle) * springLength;
            ball.vx += (targetx - ball.x) * ball.bounc;
            ball.vy += (targety - ball.y) * ball.bounc;
            ball.vx *= ball.friction;
            ball.vy *= ball.friction;
            ball.x += ball.vx;
            ball.y += ball.vy;trace(ball.x);
            onDrawLine(fieldx, fieldy, ball.x, ball.y);
        }
       
        /**
         * offSetSpring MOUSE_DOWN
         */
        public function onOffSetSpringHandler(event:Event):void {
            if (event.type == MouseEvent.MOUSE_DOWN) {
                removeEventListener(Event.ENTER_FRAME, onOffSetSpring);
                addEventListener(Event.ENTER_FRAME, onDrawLineHandler);
                stage.addEventListener(MouseEvent.MOUSE_UP, onOffSetSpringHandler, false, 0, true);
                ball.startDrag();
            }else if (event.type == MouseEvent.MOUSE_UP) {
                removeEventListener(Event.ENTER_FRAME, onDrawLineHandler);
                stage.removeEventListener(MouseEvent.MOUSE_UP, onOffSetSpringHandler);
                addEventListener(Event.ENTER_FRAME, onOffSetSpring, false, 0, true);
                ball.stopDrag();
            }
        }
        /*--------------------------------------------*/
        /**
         * chainArray
         */
        public function chainArray():void {
            for (var i:int = 0; i < 10; i++) {
                var picBall:Ball = new Ball(10, Math.random() * 0xFFFFFF);
                picBall.bounc = 0.5;
                picBall.gravity = 0;
                addChild(picBall);
                arrBall.push(picBall);
            }
            addEventListener(Event.ENTER_FRAME, onChainArrayHandler, false, 0, true);
        }
        /**
         * chainArray ENTER_FRAME
         */
        public function onChainArrayHandler(event:Event):void {
            moveBall(Ball(arrBall[0]), mouseX, mouseY);
            for (var i:int = 1; i < arrBall.length;  i++) {
                var ballcase1:Ball = Ball(arrBall[i]);
                var ballcase0:Ball = Ball(arrBall[i - 1]);
                moveBall(ballcase1, ballcase0.x, ballcase0.y);
            }
        }
        /**
         * move ball
         */
        public function moveBall(_ball:Ball, _tarx:Number, _tary:Number):void {
            _ball.vx = (_tarx - _ball.x) * _ball.bounc;
            _ball.vy = (_tary - _ball.y) * _ball.bounc;
            _ball.vx *= _ball.bounc;
            _ball.vy += _ball.gravity;
            _ball.x += _ball.vx;
            _ball.y += _ball.vy;
        }
        /*--------------------------------------------*/
        /**
         * spring
         */
        public function spring():void {
            fieldx = stage.stageWidth / 2;
            fieldy = stage.stageHeight / 2;
            ball = new Ball(10);
            ball.x = 100;
            ball.y = 100;
            ball.bounc = 0.5;
            ball.friction = 0.05;
            ball.gravity = 0.02;
            addChild(ball);
            onDrawLine(fieldx, fieldy, ball.x, ball.y);
            ball.addEventListener(MouseEvent.MOUSE_DOWN, onSpringDownHandler, false, 0, true);
        }
        /**
         * spring MOUSE_DOWN
         */
        public function onSpringDownHandler(event:Event):void {
            if (event.type == MouseEvent.MOUSE_DOWN) {
                removeEventListener(Event.ENTER_FRAME, onSpringHandler);
                addEventListener(Event.ENTER_FRAME, onDrawLineHandler);
                stage.addEventListener(MouseEvent.MOUSE_UP, onSpringDownHandler, false, 0, true);
                ball.startDrag();
            }else if (event.type == MouseEvent.MOUSE_UP) {
                removeEventListener(Event.ENTER_FRAME, onDrawLineHandler);
                stage.removeEventListener(MouseEvent.MOUSE_UP, onSpringDownHandler);
                addEventListener(Event.ENTER_FRAME, onSpringHandler, false, 0, true);
                ball.stopDrag();
            }
        }
        /**
         * onSpringHandler
         */
        public function onSpringHandler(event:Event):void {
            ball.ax = (fieldx - ball.x) * ball.bounc;
            ball.ay = (fieldy - ball.y) * ball.bounc;
            ball.vx += ball.ax;
            ball.vy += ball.ay;
            ball.vx *= (1 - ball.friction);
            ball.vy *= (1 - ball.gravity);
            ball.x += ball.vx;
            ball.y += ball.vy;
            onDrawLine(fieldx, fieldy, ball.x, ball.y);
        }
        /*--------------------------------------------*/
        /**
         * throwing
         */
        public function esaing():void {
            ball = new Ball(10);
            ball.friction = 0.1;
            ball.bounc = 0.01;
            ball.alpha = 1;
            addChild(ball);
            addEventListener(Event.ENTER_FRAME, onEsaingHandler, false, 0, true);
        }
        /**
         * onEsaingHandler
         */
        public function onEsaingHandler(event:Event):void {
            var target:Number = Math.sqrt((mouseX - ball.x) *(mouseX - ball.x) + (mouseY - ball.y) *(mouseY - ball.y));
            if (target <= 0.5) {
                ball.x = mouseX;
                ball.y = mouseY;
                ball.alpha = 1;
                //removeEventListener(Event.ENTER_FRAME, onEsaingHandler);
            }
            else {
                red = 255 * ball.bounc;
                green = 255 * ball.bounc;
                blue = 255 * ball.bounc;
                redTar += red;
                greenTar += green;
                blueTar += blue;
                ball.transform.colorTransform = new ColorTransform(1, 1, 1, 1, 0, 0, blueTar, 0);
                ball.vx = (mouseX - ball.x) * ball.friction;
                ball.vy = (mouseY - ball.y) * ball.friction;
                ball.x += ball.vx;
                ball.y += ball.vy;
            }
        }
        /*--------------------------------------------*/
        /**
         * throwing
         */
        public function throwing():void {
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;
            ball = new Ball(30);
            ball.x = stage.stageWidth / 2;
            ball.y = stage.stageHeight / 2;
            ball.bounc = -0.7;
            ball.gravity = 0.5;
            ball.friction = 0.1;
            ball.vx =  - 5;
            ball.vy = -10;
            addChild(ball);
            ball.addEventListener(MouseEvent.MOUSE_DOWN, onThrowingDownHandler, false, 0, true);
            addEventListener(Event.ENTER_FRAME, onThrowingHandler, false, 0, true);
        }
        /**
         * MOUSE_DOWN
         */
        public function onThrowingDownHandler(event:MouseEvent):void {
            if (event.type == MouseEvent.MOUSE_DOWN) {
                targetx = ball.x;
                targety = ball.y;
                removeEventListener(Event.ENTER_FRAME, onThrowingHandler);
                addEventListener(Event.ENTER_FRAME, onTraceVelocityHandler, false, 0, true);
                stage.addEventListener(MouseEvent.MOUSE_UP, onThrowingDownHandler, false, 0, true);
                ball.startDrag();
            }else if (event.type == MouseEvent.MOUSE_UP) {
                stage.removeEventListener(MouseEvent.MOUSE_UP, onThrowingDownHandler);
                removeEventListener(Event.ENTER_FRAME, onTraceVelocityHandler);
                addEventListener(Event.ENTER_FRAME, onThrowingHandler, false, 0, true);
                ball.stopDrag();
                trace(MouseEvent.MOUSE_UP);
            }
        }
        /**
         * ENTER_FRAME
         */
        public function onThrowingHandler(event:Event):void {
            if (ball.x + ball.radius >= stage.stageWidth) {
                ball.x = stage.stageWidth - ball.radius;
                ball.vx *= ball.bounc;
            }else if (ball.x - ball.radius <= 0) {
                ball.x = 0 + ball.radius;
                ball.vx *= ball.bounc;
            }
            if (ball.y + ball.radius >= stage.stageHeight) {
                ball.y = stage.stageHeight - ball.radius;
                ball.vy *= ball.bounc;
            }else if (ball.y - ball.radius <= 0) {
                ball.y = 0 + ball.radius;
                ball.vy *= ball.bounc;
            }
            ball.vy += ball.gravity;
            /* X coordinate friction*/
            if (ball.y == stage.stageHeight - ball.radius) {
                ball.vx *= ball.friction;
            }
            ball.x += ball.vx;
            ball.y += ball.vy;
        }
        /**
         * ENTER_FRAME
         */
        public function onTraceVelocityHandler(event:Event):void {
            ball.vx = ball.x - targetx;
            ball.vy = ball.y - targety;
            targetx = ball.x;
            targety = ball.y;
        }
        /*--------------------------------------------*/
        /**
         * drag and move1
         */
        public function dragAndMove1():void {
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;
            ball = new Ball(30);
            ball.x = stage.stageWidth / 2;
            ball.y = stage.stageHeight / 2;
            ball.bounc = -0.7;
            ball.gravity = 0.5;
            ball.friction = 0.1;
            ball.vx =  - 5;
            ball.vy = -10;
            addChild(ball);
            ball.addEventListener(MouseEvent.MOUSE_DOWN, onDragAndMoveDownHandler, false, 0, true);
            addEventListener(Event.ENTER_FRAME, onDragAndMoveHandler, false, 0, true);
        }
        /**
         * MOUSE_DOWN
         */
        public function onDragAndMoveDownHandler(event:MouseEvent):void {
            if (event.type == MouseEvent.MOUSE_DOWN) {
                //ball.vx = 0;
                ball.vy = 0;
                removeEventListener(Event.ENTER_FRAME, onDragAndMoveHandler);
                stage.addEventListener(MouseEvent.MOUSE_UP, onDragAndMoveDownHandler, false, 0, true);
                ball.startDrag();
            }else if (event.type == MouseEvent.MOUSE_UP) {
                stage.removeEventListener(MouseEvent.MOUSE_UP, onDragAndMoveDownHandler);
                addEventListener(Event.ENTER_FRAME, onDragAndMoveHandler, false, 0, true);
                ball.stopDrag();
            }
        }
        /**
         * ENTER_FRAME
         */
        public function onDragAndMoveHandler(event:Event):void {
            if (ball.x + ball.radius >= stage.stageWidth) {
                ball.x = stage.stageWidth - ball.radius;
                ball.vx *= ball.bounc;
            }else if (ball.x - ball.radius <= 0) {
                ball.x = 0 + ball.radius;
                ball.vx *= ball.bounc;
            }
            if (ball.y + ball.radius >= stage.stageHeight) {
                ball.y = stage.stageHeight - ball.radius;
                ball.vy *= ball.bounc;
            }else if (ball.y - ball.radius <= 0) {
                ball.y = 0 + ball.radius;
                ball.vy *= ball.bounc;
            }
            ball.vy += ball.gravity;
            /* X coordinate friction*/
            if (ball.y == stage.stageHeight - ball.radius) {
                //ball.vx *= ball.friction;
            }
            ball.x += ball.vx;
            ball.y += ball.vy;
        }
        /*--------------------------------------------*/
        /**
         * mouseEventTrace
         */
        public function mouseEventTrace():void {
            ball = new Ball(30);
            addChild(ball);
            ball.x = stage.stageWidth / 2;
            ball.y = stage.stageHeight / 2;
            ball.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler1, false, 0, true);
            ball.addEventListener(MouseEvent.MOUSE_UP, onMouseDownHandler1, false, 0, true);
            stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler2, false, 0, true);
            stage.addEventListener(MouseEvent.MOUSE_UP, onMouseDownHandler2, false, 0, true);
        }
        /**
         * MOUSE_DOWN
         */
        public function onMouseDownHandler1(event:MouseEvent):void {
            /* only cursor on the MC */
            if (event.type == MouseEvent.MOUSE_DOWN) {
                //ball.startDrag(true);
                //ball.startDrag(false);
                ball.startDrag(false, new Rectangle(100, 100, 100, 100));
                //trace("ball-MOUSE_DOWN");
            }else if (event.type == MouseEvent.MOUSE_UP) {
                ball.stopDrag();
                //trace("ball-MOUSE_UP");
            }
        }
        /**
         * MOUSE_DOWN
         */
        public function onMouseDownHandler2(event:MouseEvent):void {
            if (event.type == MouseEvent.MOUSE_DOWN) {
                //ball.startDrag(false);
                //stage.addEventListener(MouseEvent.MOUSE_UP, onMouseDownHandler2, false, 0, true);
                //trace("stage-MOUSE_DOWN");
            }else if (event.type == MouseEvent.MOUSE_UP) {
                //stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseDownHandler2);
                //ball.stopDrag();
                //trace("stage-MOUSE_UP");
            }
        }
        /*--------------------------------------------*/
        /**
         * fountain
         */
        public function fountain():void {
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;
            for (var i:int = 0; i < 100; i++) {
                var picBall:Ball = new Ball(2, Math.random() * 0xFFFFFF);
                picBall.x = stage.stageWidth / 2;
                picBall.y = stage.stageHeight;
                picBall.vx = Math.random() * 4 - 8;
                picBall.vy = Math.random() * 5 -20;
                addChild(picBall);
                arrBall.push(picBall);
            }
            addEventListener(Event.ENTER_FRAME, onfountainHandler, false, 0, true);
        }
        /**
         * fountain
         */
        public function  onfountainHandler(event:Event):void {
            for (var i:int = arrBall.length - 1; i > 0;  i--) {
                var ballcase:Ball = Ball(arrBall[i]);
                ballcase.x += ballcase.vx;
                ballcase.vy += 1; // gravity
                ballcase.y += ballcase.vy;
                if ((ballcase.x - ballcase.radius > stage.stageWidth)
                    || (ballcase.x + ballcase.radius < 0)
                    || (ballcase.y - ballcase.radius > stage.stageHeight)
                    || (ballcase.y + ballcase.radius < 0)) {
                    ballcase.x = stage.stageWidth / 2;
                    ballcase.y = stage.stageHeight;
                    ballcase.vx = Math.random() * 4 - 8;
                    ballcase.vy = Math.random() * 5 -20;
                }
            }
        }
        /*--------------------------------------------*/
        /**
         * removalBall
         */
        public function removalBall():void {
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;
            for (var i:int = 0; i < 10; i++) {
                var picBall:Ball = new Ball(10);
                picBall.x = Math.random() * stage.stageWidth / 2;
                picBall.y = Math.random() * stage.stageHeight / 2;
                picBall.vx = Math.random() * 2 - 1;
                picBall.vy = Math.random() * 2 - 1;
                addChild(picBall);
                arrBall.push(picBall);
            }
            addEventListener(Event.ENTER_FRAME, onRemovalBallHandler, false, 0, true);
        }
        /**
         * removalBall
         */
        public function  onRemovalBallHandler(event:Event):void {
            for (var i:int = arrBall.length - 1; i > 0;  i--) {
                var ballcase:Ball = Ball(arrBall[i]);
                ballcase.x += ballcase.vx;
                ballcase.y += ballcase.vy;
                if ((ballcase.x - ballcase.radius > stage.stageWidth)
                    || (ballcase.x + ballcase.radius < 0)
                    || (ballcase.y - ballcase.radius > stage.stageHeight)
                    || (ballcase.y + ballcase.radius < 0)) {
                    trace(ballcase.x);trace(ballcase.y);
                    removeChild(ballcase);
                    arrBall.splice(i, 1);
                    if (arrBall.length <= 0) {
                        removeEventListener(Event.ENTER_FRAME, onRemovalBallHandler);
                    }
                }
            }
        }
        /*--------------------------------------------*/
        /**
         * acceleration
         */
        public function acceleration():void {
            ball = new Ball(10);
            addChild(ball);
            ball.bounc = -0.7;
            ball.x = stage.stageWidth / 2;
            ball.y = stage.stageHeight / 2;
            addEventListener(Event.ENTER_FRAME, onEnterFrameAccelerationHandler2, false, 0, true);
            stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler2, false, 0, true);
            stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler2, false, 0, true);
        }
        /**
         * acceleration
         * @param    evet
         */
        private function onKeyDownHandler2(event:KeyboardEvent):void {
            var key:uint = event.keyCode;
            switch(key) {
                case Keyboard.LEFT:
                    ball.ax -= 0.01;
                    break;
                case Keyboard.UP:
                    ball.ay -= 0.01;
                    break;
                case Keyboard.RIGHT:
                    ball.ax += 0.01;
                    break;
                case Keyboard.DOWN:
                    ball.ay += 0.01;
                    break;
                default:
                    trace(key);
                    break;
            }
        }
        /**
         * acceleration
         * @param    evet
         */
        private function onKeyUpHandler2(event:KeyboardEvent):void {
            ball.ax = 0;
            ball.ay = 0;
        }
        /**
         * acceleration
         * @param    evet
         */
        private function onEnterFrameAccelerationHandler2(event:Event):void {
            if (ball.x + ball.radius >= stage.stageWidth) {
                ball.x = stage.stageWidth - ball.radius;
                ball.vx *= ball.bounc;
            }else if (ball.x - ball.radius <= 0) {
                ball.x = 0 + ball.radius;
                ball.vx *= ball.bounc;
            }
            if (ball.y + ball.radius >= stage.stageHeight) {
                ball.y = stage.stageHeight - ball.radius;
                ball.vy *= ball.bounc;
            }else if (ball.y - ball.radius <= 0) {
                ball.y = 0 + ball.radius;
                ball.vy *= ball.bounc;
            }
            else {
            }
            ball.vx += ball.ax;
            ball.vy += ball.ay;
            //ball.vy += 0.02;
            ball.x += ball.vx;
            ball.y += ball.vy;
            //trace("x:" + ball.x + "  " + "y:" + ball.y);
        }
        /*--------------------------------------------*/
        /**
         * velocity
         */
        public function velocity2():void {
            arrow = new Arrow();
            arrow.bounc = 0.7;
            addChild(arrow);
            arrow.x = 100;
            arrow.y = 100;
            addEventListener(Event.ENTER_FRAME, onEnterFrameHandler2, false, 0, true);
        }
        /**
         * velocity2
         * @param    evet
         */
        private function onEnterFrameHandler2(evet:Event):void {
            var dx:Number = mouseX - arrow.x;
            var dy:Number = mouseY - arrow.y;
            var vr:Number = 5;
            // get radian
            var radian:Number = Math.atan2(dy, dx);
            /* get angle */
            arrow.rotation = radian * 180 / Math.PI;
            //arrow.rotation += vr;
            /* set speed */
            arrow.ax = Math.cos(radian) * 0.3;
            arrow.ay = Math.sin(radian) * 0.3;
            arrow.vx += arrow.ax;
            arrow.vy += arrow.ay;
            //arrow.vx *= arrow.bounc;
            //arrow.vy *= arrow.bounc;
            arrow.x += arrow.vx;
            arrow.y += arrow.vy;
        }
        /*--------------------------------------------*/
        /**
         * velocity1
         */
        public function velocity1():void {
            ball = new Ball();
            addChild(ball);
            ball.x = 50;
            ball.y = 100;
            addEventListener(Event.ENTER_FRAME, onEnterFrameHandler1, false, 0, true);
        }
        /**
         * velocity
         * @param    evet
         */
        private function onEnterFrameHandler1(evet:Event):void {
            ball.vx = Math.cos(45) * 3;
            ball.vy = Math.sin(45) * 3;
            ball.x += ball.vx;
            ball.y += ball.vy;
        }
        /*--------------------------------------------*/
        /**
         * filter
         */
        public function filtersTest():void {
            graphics.lineStyle(1,0,0);
            graphics.beginFill(0xFF0000, 1);
            graphics.drawCircle(200, 200, 100);
            graphics.endFill();
            filters = [new BlurFilter(20, 20, 1)];
        }
        /*--------------------------------------------*/
        /**
         * colorTransform
         */
        public function colorTransform():void {
            var img:Bitmap = new pic();
            addChild(img);
            img.transform.colorTransform = new ColorTransform(-1, -1, -1, 1, 255, 255, 255, 0);
        }
        /*--------------------------------------------*/
        /**
         * beginGradientFill,GradientType.RADIAL
         */
        public function drawGredientRadial():void {
            var x:Number = 150;
            var y:Number = 250;
            var r:Number = 100;
            var color1:int = 0xFF0000;//red
            var color2:int = 0xFFFFFF;//black
            graphics.lineStyle(1);
            graphics.lineStyle(1, 0, 0);
            var color:Array = [color1, color2];
            var alphas:Array = [1, 1];
            var ratios:Array = [0, 255];
            var matrix:Matrix = new Matrix();
            matrix.createGradientBox(r * 2, r * 2, 0, x, y);
            graphics.beginGradientFill(GradientType.RADIAL, color, alphas, ratios, matrix);
            graphics.drawCircle(x + r, y + r, r);
            graphics.endFill();
        }
        /*--------------------------------------------*/
        /**
         * beginGradientFill,GradientType.LINEAR
         */
        public function drawGredientLineer():void {
            graphics.lineStyle(1);
            var color:Array = [0xff0000, 0xffffff];
            var alphas:Array = [1, 1];
            var ratios:Array = [0, 255];
            var matrix:Matrix = new Matrix();
            matrix.createGradientBox(100, 100, 0, 0, 0);
            graphics.beginGradientFill(GradientType.LINEAR, color, alphas, ratios, matrix);
            graphics.drawRect(0, 0, 100, 100);
            graphics.endFill();
        }
        /*--------------------------------------------*/
        /**
         * drawCurve
         */
        public function drawCurve():void {
            stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMoveHandler, false, 0, true);
        }
        /**
         * curveTo
         * @param    event
         */
        public function onMouseMoveHandler(event:MouseEvent):void {
            x1 = mouseX * 2 - (x0 + x2) / 2;
            y1 = mouseY * 2 - (y0 + y2) / 2;
            graphics.clear();
            graphics.lineStyle(1);
            graphics.moveTo(x0, y0);
            graphics.curveTo(x1, y1, x2, y2);
        }
        /*--------------------------------------------*/
        /**
         * Embed
         */
        public function embedAsset():void {
            var img:Bitmap = new pic();
            addChild(img);
        }
        /*--------------------------------------------*/
        /**
         * loader
         */
        public function loader():void {
            var loader:Loader = new Loader();
            addChild(loader);
            loader.load(new URLRequest("DC1.jpg"));
        }   
        /*--------------------------------------------*/
       
        /*-------common*/
        public function getAFromB(x1:Number, x2:Number, y1:Number,y2:Number):Number {
            return Math.sqrt((x1 - x2) *(x1 - x2) + (y1 - y2) *(y1 - y2));
        }
        public function getNewBall(_ball:Ball, length:Number) {
           
        }
        /**
         * onSpringHandler
         */
        public function onDrawLineHandler(event:Event):void {
            onDrawLine(fieldx, fieldy, ball.x, ball.y);
        }
        /**
         * draw line
         */
        public function onDrawLine(x1:Number, y1:Number, x2:Number,y2:Number):void {
            graphics.clear();
            graphics.lineStyle(1);
            graphics.moveTo(x1, y1);
            graphics.lineTo(x2, y2);
        }
        /*-------common*/
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值