【AS3代码】打砖块

package
{
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.text.TextField;
    
    public class Main extends Sprite
    {
        private var vx:Number = 10;
        private var vy:Number = 10;
        
        public const BOARD_WIDTH:Number = 60;
        public const BOARD_HEIGHT:Number = 15;
        
        public const H_GAP:Number = 8;
        public const V_GAP:Number = 15;
        
        public const SPEED:Number = 20;
        
        private var boardArr:Array = new Array();
        
        private var newBoard:myBoard;
        private var ball:Ball = new Ball();
        private var board:myBoard;
        
        private var score:TextField;
        private var num:Number = new Number();
        
        private var an:anniu;
        
        public function Main()
        {
            init();
        }
        private function init():void
        {
            num = 0;
            
            //显示球
            ball.x = 200;
            ball.y = 300;
            this.addChild(ball);
            
            //显示底板
            board = new myBoard();
            board.x = stage.stageWidth / 2;
            board.y = stage.stageHeight - board.height;
            this.addChild(board);
            
            //显示方块
            for(var i:int = 0; i < 7; i++)
            {
                for(var j:int = 0; j < 6; j++)
                {
                    newBoard = new myBoard();
                    newBoard.width = BOARD_WIDTH;
                    newBoard.height = BOARD_HEIGHT;
                    newBoard.x = 8 + BOARD_WIDTH / 2 + i * BOARD_WIDTH + i * H_GAP;
                    newBoard.y = 20 + BOARD_HEIGHT / 2 + j * BOARD_HEIGHT + j * V_GAP;
                    addChild(newBoard);
                    boardArr.push(newBoard);
                }
            }
            
            //显示得分
            score = new TextField();
            score.text = "得分:" + String(num);
            score.x = 5;
            score.y = stage.stageHeight - 50;
            this.addChild(score);
            
            //显示按钮
            an = new anniu();
            an.x = stage.stageWidth - 50;
            an.y = stage.stageHeight - 80;
            an.buttonMode = true;
            this.addChild(an);
            
            an.addEventListener(MouseEvent.CLICK, onClick);
                        
            stage.addEventListener(Event.ENTER_FRAME, onEF);
        }
        
        private function onClick(e:MouseEvent):void
        {
            
            stage.removeChild(score);
            stage.removeChild(newBoard);            
            init();
        }
        
        private function onEF(event:Event):void
        {
            var dis:Number = this.mouseX - board.x;
            
            //底板跟随鼠标
            board.x = this.mouseX;
            
            //限制底板不要出左右边界
            if((board.x - board.width / 2) <= 0)
            {
                board.x = board.width / 2;
            }
            
            else if((board.x + board.width / 2) >= stage.stageWidth)
            {
                board.x = stage.stageWidth - board.width / 2;
            }
            
            //球自由滚动
            ball.x += vx;
            ball.y += vy;
            
            //若球接触了右边界
            if((ball.x + ball.width / 2) > stage.stageWidth)
            {
                vx *= -1;
            }
            //接触了左边界
            else if((ball.x - ball.width / 2) < 0)
            {
                vx *= -1;
            }
            //若球接触了下边界
            else if((ball.y + ball.height / 2) > stage.stageHeight)
            {
                //vy *= -1;
                
                stage.removeChild(ball);
                
                //更新得分
                num--;
                score.text = "得分:" + String(num);
            }
            //接触了上边界
            else if((ball.y - ball.height / 2) < 0)
            {
                vy *= -1;
            }
            
            //若方块碰到了小球
            if(board.hitTestObject(ball))
            {
                vy *= -1;
            }
            
            //若球碰到砖块,就移除砖块
            for(var i:int=0;i<boardArr.length;i++)
            {
                if(ball.hitTestObject(boardArr[i]))
                {
                    this.removeChild(boardArr[i]);
                    boardArr.splice(i, 1);
                    vy *= -1;
                    
                    //更新得分
                    num++;
                    score.text = "得分:" + String(num);
                }
                    
            }
        }
    }
}
posted @ 2012-08-09 10:21  王翔(kingfly)  阅读(709)  评论(0编辑  收藏  举报