一个问题求解

来源:互联网 发布:淘宝玛卡是真的吗 编辑:程序博客网 时间:2024/06/01 17:20
package  {
        import flash.display.*;
        import flash.events.*;
        public class TargetPractice extends MovieClip {
                // movie clips
                private var ball:Ball;
                private var ballShadow:BallShadow;
                private var target:Target;
                private var cannonRings:Array;
                // cannon position and angle//大炮的位置和角度
                private var cannonPosition:Number;
                private var cannonAngle:Number;
                // ball vector//球的矢量
                private var dy,dz:Number;
                public function TargetPractice() {
                        // set up all movie clips//建立所有影片剪辑
                        target = new Target();
                        ball = new Ball();
                        ballShadow = new BallShadow();
                        ballShadow.rotationX = -90; // rotate shadow to lie down on surface//翻转阴影躺在表面
                        ballShadow.y = 350; // shadow on the ground//地上的影子
                        addChild(ballShadow);
                        addChild(target);
                        addChild(ball);
                        // create 10 rings to show cannon direction//创建10个环指炮方向
                        cannonRings = new Array();
                        for(var i=0;i<3;i++) {
                                var cannonRing:CannonRing = new CannonRing();
                                cannonRings.push(cannonRing);
                                addChild(cannonRing);
                        }
                        // set initial cannon position and angle//设置初始大炮的位置和角度
                        cannonAngle = -30;
                        cannonPosition = 275;
                        drawCannon();
                        // set up first target//建立了第一个目标
                        setUpTarget();
                        // accept keyboard input//接受键盘输入
                        //stage.addEventListener(KeyboardEvent.KEY_DOWN,keyPressedUp);
                        //接受鼠标点击控制炮弹发射方向
                        stage.addEventListener(MouseEvent.CLICK,clickMouse);
                }
                
                private  function clickMouse(e:MouseEvent){
                        drawCannon();
                        fireBall() ;
                        target.x=mouseX;
                        target.y=mouseY;
                        //ball.x=mouseX;
                        //ball.y=mouseY;
                        
                        }
                public function drawCannon() {
                        // place ball//地上球的位置
                        ball.x = cannonPosition;
                        ball.y = 350;
                        ball.z = -100;
                        // place shadow
                        ballShadow.x = cannonPosition;
                        ballShadow.y = 350;
                        ballShadow.z = -100;
                        // draw cannon rings//画炮方向
                        for(var i=0;i<cannonRings.length;i++) {
                                cannonRings[i].x = cannonPosition;
                                cannonRings[i].y = 350 + 5*i*Math.sin(cannonAngle*(Math.PI/180));
                                cannonRings[i].z = -100+ 5*i*Math.cos(cannonAngle*(Math.PI/180));
                        }
                }

                // pick a random location for the target in the field//选择一个随机位置的目标领域中的
                private function setUpTarget() {
                        target.x = Math.random()*400-200+275;
                        target.y = 350;
                        target.z = Math.random()*1200+600;
                }
                
                // accept key presses and move the cannon//接受键值和移动大炮
                /*public function keyPressedUp(event:KeyboardEvent) {
                        if (event.keyCode == 37) {
                                cannonPosition -= 5;
                                drawCannon();
                        } else if (event.keyCode == 39) {
                                cannonPosition += 5;
                                drawCannon();
                        } else if (event.keyCode == 38) {
                                cannonAngle -= 1;
                                drawCannon();
                        } else if (event.keyCode == 40) {
                                cannonAngle += 1;
                                drawCannon();
                        } else if (event.keyCode == 32) {
                                fireBall();
                        }
                        
                }*/
                
                
                ///接受鼠标点击
                //public function keyPressedUp(event:MouseEvent){}
                
                        // throw the cannon ball//仍炮弹
                    private function fireBall() {
                        var f:Number = 15.0; // initial force of blast//起初爆炸
                        
                        // calculate initial vector based on force and angle//计算初始向量的基础上的力量和角度
                        dy = f*Math.sin(cannonAngle*(Math.PI/180));
                        dz = f*Math.cos(cannonAngle*(Math.PI/180));
                
                        // move ball each frame//每帧移动球
                        addEventListener(Event.ENTER_FRAME, moveBall);
                }
                
                // move ball and account for dravity//移动球和帐户dravity
                private function moveBall(e:Event) {
                        
                        // ball movement//球类运动
                        ball.y += dy;
                        ball.z += dz;
                        
                        
                        // move shadow along with ball//随球移动的影子
                        ballShadow.z += dz;
                        
                        // change vector to account for gravity//考虑到重力变化向量
                        dy += .1;
                        
                        // see if the ball hit the ground//如果球击中地面
                        if (ball.y > 350) {
                                removeEventListener(Event.ENTER_FRAME, moveBall);
                                var dist:Number = Math.sqrt(Math.pow(ball.x-target.x,2)+Math.pow(ball.z-target.z,2));
                                if (dist < 50) {
                                        setUpTarget();
                                }
                        }
                }
        }

}




////////////////////////想要得到的效果是鼠标点击舞台的任何位置,小球就弹到哪里


原创粉丝点击