zoukankan      html  css  js  c++  java
  • 【AS3代码】是男人就坚持30秒

    package
    {
        import flash.display.MovieClip;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.events.KeyboardEvent;
        import flash.ui.Keyboard;
        
        public class Main extends Sprite
        {
            private var ballXSpeed:Number = 0;            //小球X轴速度
            private var ballYSpeed:Number = 0;            //小球Y轴速度
            private var starNum:int = 10;                //星星数量
            private var starArray:Array; //保存星星的数组
            private var ball:mcBall;
            
            public function Main()
            {
                init();
            }
            private function init():void
            {
                starArray = new Array();
                ball = new mcBall();
                ball.x = stage.stageWidth / 2;
                ball.y = stage.stageHeight / 2;
                this.addChild(ball);
                
                //放置小星星
                for(var i:int = 0; i < starNum; i++)
                {
                    makeStars();
                }
                
                //按键改变小球移动速度
                stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler);
                stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler);
                
                //球的移动事件
                stage.addEventListener(Event.ENTER_FRAME, moveBall);
                
                //小星星的移动事件
                stage.addEventListener(Event.ENTER_FRAME, moveStar);
            }
            
            private function onKeyDownHandler(evt:KeyboardEvent):void
            {
                if(evt.keyCode == Keyboard.LEFT)
                {
                    ballXSpeed = -4;
                }
                else if(evt.keyCode == Keyboard.RIGHT)
                {
                    ballXSpeed = 4;
                }
                else if(evt.keyCode == Keyboard.UP)
                {
                    ballYSpeed = -4;
                }
                else if(evt.keyCode == Keyboard.DOWN)
                {
                    ballYSpeed = 4;
                }
            }
            
            //移动小星星
            private function moveStar(evt:Event):void
            {
                for(var i:uint = 0; i < starArray.length; i++)
                {
                    starArray[i].x += starArray[i].speedX;
                    starArray[i].y += starArray[i].speedY;    
                    
                    if(starArray[i].x >= stage.stageWidth + 50 || starArray[i].x <= -50 || starArray[i].y >= stage.stageHeight +50 || starArray[i].y <= -50)
                    {
                        removeChild(starArray[i]);
                        starArray.splice(i,1);
                        i -= 1;
                        makeStars();
                    }
                }
                
                
            }
            
            private function onKeyUpHandler(evt:KeyboardEvent):void
            {
                ballXSpeed = 0;
                ballYSpeed = 0;
            }
            
            //移动小球
            private function moveBall(evt:Event):void
            {
                ball.x += ballXSpeed;
                ball.y += ballYSpeed;
                
                //如果碰到墙壁就反弹,直接改变速度的方向
                if(ball.x >= stage.stageWidth - ball.width / 2)
                {
                    ball.x = stage.stageWidth - ball.width / 2 - 0.1;
                }
                else if(ball.x <= 0)
                {
                    ball.x = 0;
                }
                else if(ball.y >= stage.stageHeight - ball.height / 2)
                {
                    ball.y = stage.stageHeight - ball.height / 2 - 0.1;
                }
                else if(ball.y <= 0)
                {
                    ball.y = 0;
                }
                
                //判断小球是否和星星碰撞
                for(var i:uint = 0; i < starArray.length; i++)
                {
                    if(ball.hitTestObject(starArray[i]))
                    {
                        trace("很不幸!你撞到星星了!");
                        stage.removeEventListener(Event.ENTER_FRAME,moveBall);
                        stage.removeEventListener(Event.ENTER_FRAME, moveStar);
                        break;
                    }
                }
            }
            
            //放置小星星
            private function makeStars():void
            {
                var star:Star = new Star();
                
                
                //随机产生星星初始方向(值范围0-3)
                var starDirection:int = Math.floor(Math.random() * 4);
                var temp:int = Math.floor(Math.random() * 2);    //0,1
                var xyDirection:int = (temp == 0) ? 1 : -1;        //随机获得往x或y方向飞
                
                switch(starDirection)
                {
                    //往下飞
                    case 0:
                        star.x = Math.random() * stage.stageWidth;
                        star.y = 0;
                        star.speedX = Math.random() * 4 * xyDirection;
                        star.speedY = Math.random() * 4;
                        break;
                    //往上飞
                    case 1:
                        star.x = Math.random() * stage.stageWidth;
                        star.y = stage.stageHeight;
                        star.speedX = Math.random() * 4 * xyDirection;
                        star.speedY = -Math.random() * 4;
                        break;
                    //往左飞
                    case 2:
                        star.x = stage.stageWidth;
                        star.y = Math.random() * stage.stageHeight;
                        star.speedX = -Math.random() * 4;
                        star.speedY = Math.random() * 4 * xyDirection;
                        break;
                    //往右飞
                    case 3:
                        star.x = 0;
                        star.y = Math.random() * stage.stageHeight;
                        star.speedX = Math.random() * 4;
                        star.speedY = Math.random() * 4 * xyDirection;
                        break;
                }
                
                this.addChild(star);
                starArray.push(star);
                
            }
        }
    }
  • 相关阅读:
    OpenLayers测量距离和面积
    BeanUtils接口和类
    深入理解Spring--动手实现一个简单的SpringIOC容器
    Spring:源码解读Spring IOC原理
    Spring AOP的底层实现原理
    ClassLoader工作机制
    Cglib及其基本使用
    InvocationHandler和Proxy(Class)的动态代理机制详解
    解密Redis的持久化和主从复制机制
    Redis之父九条编程忠告
  • 原文地址:https://www.cnblogs.com/kingfly/p/2630610.html
Copyright © 2011-2022 走看看