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