package {
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.events.TimerEvent;
    import flash.utils.Timer;
    
    /**
      最简单的记忆力颜色匹配 游戏
      在资料库中有一个colors 影片,8帧,每帧保存一个颜色
    **/
    public class color_match extends Sprite {
        //---   变量声明  ---------
        private var first_tile:colors;
        private var second_tile:colors;
        private var pause_timer:Timer;
        
        //匹配数组设定 
        var colordeck:Array = new Array(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8);
        
        public function color_match() {
            //-----   4*4 的方格排列  ----------
            for (x=1; x<=4; x++) {
                for (y=1; y<=4; y++) {
                    //设定随机帧数
                    var random_card = Math.floor(Math.random()*colordeck.length);
                    //创建实例
                    var tile:colors = new colors();
                        //保存给点的随机数
                        tile.col = colordeck[random_card];
                        //寸数组中删除掉已选的数值
                        colordeck.splice(random_card,1);
                        //默认显示白色背景,并布局设定鼠标事件
                        tile.gotoAndStop(9);
                        tile.x = (x-1)*82;
                        tile.y = (y-1)*82;
                        tile.addEventListener(MouseEvent.CLICK,tile_clicked);
                        addChild(tile);
                }
            }
        }
        
        //------    重点的鼠标点击事件  -----------------
        public function tile_clicked(event:MouseEvent) {
            //获取当前点击对象索引
            var clicked:colors = (event.currentTarget as colors);
            //如果是第一次点击记录
            if (first_tile == null) {
                first_tile = clicked;
                first_tile.gotoAndStop(clicked.col);
            }
            else if (second_tile == null && first_tile != clicked) {
               //如果是第二次点击
                second_tile = clicked;
                second_tile.gotoAndStop(clicked.col);
                //判断第一次和第二次点击是否一致
                if (first_tile.col == second_tile.col) {
                    //计时器一秒钟
                    pause_timer = new Timer(1000,1);
                    pause_timer.addEventListener(TimerEvent.TIMER_COMPLETE,remove_tiles);
                    pause_timer.start();
                }
                else {
                    pause_timer = new Timer(1000,1);
                    pause_timer.addEventListener(TimerEvent.TIMER_COMPLETE,reset_tiles);
                    pause_timer.start();
                }
            }
        }
        //如果两次点击颜色不一致则重置
        public function reset_tiles(event:TimerEvent) {
            first_tile.gotoAndStop(9);
            second_tile.gotoAndStop(9);
            first_tile = null;
            second_tile = null;
            pause_timer.removeEventListener(TimerEvent.TIMER_COMPLETE,reset_tiles);
        }
        
        //如果两次点击颜色匹配则移除方格
        public function remove_tiles(event:TimerEvent) {
            removeChild(first_tile);
            removeChild(second_tile);
            first_tile = null;
            second_tile = null;
            pause_timer.removeEventListener(TimerEvent.TIMER_COMPLETE,remove_tiles);
        }
    }
}