一个问题求解

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();
                                }
                        }
                }
        }

}




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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

澄清寰宇

如果有用请给我一根烟钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值