package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
public class Main extends MovieClip
{
//声明一个mc变量当临时的容器
private var mc;
//声明一个数组用来存储拖动元件的初始坐标
private var arr:Array = new Array();
//声明一个num数字,用来判断所有图形是否都已经对好了
private var num:uint = 0;
public function Main()
{
//for为所有拖动的对象添加鼠标手型和鼠标按下事件
for (var i:int = 0; i < 4; i++)
{
//为所有对象添加鼠标手型
this["mc" + i].buttonMode = true;
//为所有对象添加按下事件
this["mc" + i].addEventListener(MouseEvent.MOUSE_DOWN, downHandler);
//http://www.shengshiyouxi.com把所有对象的初始坐标存储进数组里面
arr.push(this["mc" + i].x, this["mc" + i].y);
}
//归位按钮在开始时候隐藏
gw_btn.visible = false;
}
//鼠标按下的方法
private function downHandler(e:MouseEvent):void
{
//临时容器mc赋值为当前按下的对象
mc = e.currentTarget;
//开始拖动mc
mc.startDrag();
//把mc对象移动到最上层,这样就不会出现拖动的对象处于未拖动对象的下方了
addChild(mc);
//用stage监听鼠标抬起事件
stage.addEventListener(MouseEvent.MOUSE_UP, upHandler);
}
//stage鼠标抬起的方法
private function upHandler(e:MouseEvent):void
{
//mc对象停止拖动
mc.stopDrag();
//移除stage的鼠标抬起监听事件
stage.removeEventListener(MouseEvent.MOUSE_UP, upHandler);
//声明uint类型的变量n并赋值为mc对象的名字的第2位往后面的数值,这一步是为了取值被对图的对象的编号
var n:uint = uint(String(mc.name.substr(2)));
//if语句判断,如果mc碰撞到了对图对象mc_i时执行
if (mc.hitTestObject(this["mc_" + n]))
{
//mc隐藏
mc.visible = false;
//被碰撞到的mc_i对象停止播放在第二帧上(第二帧就是对图对象的完整界面)
this["mc_" + n].gotoAndStop(2);
//判断的值num加加,用来判断拼图拼对了几次
num++;
}
//如果没有碰撞到mc_i对象
else
{
//mc的x、y坐标等于数组里面存储的初始坐标,为啥会乘以2呢,你可以自己研究一下
mc.x = arr[n*2];
mc.y = arr[n*2+1];
}
//清空mc对象
mc = null;
//if语句判断,如果num等于4(有四个被拼图的对象,所以这里的判断值为4)
if (num == 4)
{
//归位按钮gw_btn显示
gw_btn.visible = true;
//为归位按钮添加按钮点击事件
gw_btn.addEventListener(MouseEvent.CLICK, clickHandler);
}
}
//归位按钮的鼠标点击事件
private function clickHandler(e:MouseEvent):void
{
//当前点击的对象隐藏,也就是归位按钮隐藏
e.currentTarget.visible = false;
//num判断的数值归0,以便于再次判断拼图拼对了几个
num = 0;
//for为mci对象添加隐藏属性为true,x、y坐标为初始坐标,被拼图的对象停止播放在第一帧上面
for (var i:int = 0; i < 4; i++)
{
this["mc" + i].visible = true;
this["mc" + i].x = arr[i*2];
this["mc" + i].y = arr[i * 2 + 1];
this["mc_" + i].gotoAndStop(1);
}
}
}
}
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
public class Main extends MovieClip
{
//声明一个mc变量当临时的容器
private var mc;
//声明一个数组用来存储拖动元件的初始坐标
private var arr:Array = new Array();
//声明一个num数字,用来判断所有图形是否都已经对好了
private var num:uint = 0;
public function Main()
{
//for为所有拖动的对象添加鼠标手型和鼠标按下事件
for (var i:int = 0; i < 4; i++)
{
//为所有对象添加鼠标手型
this["mc" + i].buttonMode = true;
//为所有对象添加按下事件
this["mc" + i].addEventListener(MouseEvent.MOUSE_DOWN, downHandler);
//http://www.shengshiyouxi.com把所有对象的初始坐标存储进数组里面
arr.push(this["mc" + i].x, this["mc" + i].y);
}
//归位按钮在开始时候隐藏
gw_btn.visible = false;
}
//鼠标按下的方法
private function downHandler(e:MouseEvent):void
{
//临时容器mc赋值为当前按下的对象
mc = e.currentTarget;
//开始拖动mc
mc.startDrag();
//把mc对象移动到最上层,这样就不会出现拖动的对象处于未拖动对象的下方了
addChild(mc);
//用stage监听鼠标抬起事件
stage.addEventListener(MouseEvent.MOUSE_UP, upHandler);
}
//stage鼠标抬起的方法
private function upHandler(e:MouseEvent):void
{
//mc对象停止拖动
mc.stopDrag();
//移除stage的鼠标抬起监听事件
stage.removeEventListener(MouseEvent.MOUSE_UP, upHandler);
//声明uint类型的变量n并赋值为mc对象的名字的第2位往后面的数值,这一步是为了取值被对图的对象的编号
var n:uint = uint(String(mc.name.substr(2)));
//if语句判断,如果mc碰撞到了对图对象mc_i时执行
if (mc.hitTestObject(this["mc_" + n]))
{
//mc隐藏
mc.visible = false;
//被碰撞到的mc_i对象停止播放在第二帧上(第二帧就是对图对象的完整界面)
this["mc_" + n].gotoAndStop(2);
//判断的值num加加,用来判断拼图拼对了几次
num++;
}
//如果没有碰撞到mc_i对象
else
{
//mc的x、y坐标等于数组里面存储的初始坐标,为啥会乘以2呢,你可以自己研究一下
mc.x = arr[n*2];
mc.y = arr[n*2+1];
}
//清空mc对象
mc = null;
//if语句判断,如果num等于4(有四个被拼图的对象,所以这里的判断值为4)
if (num == 4)
{
//归位按钮gw_btn显示
gw_btn.visible = true;
//为归位按钮添加按钮点击事件
gw_btn.addEventListener(MouseEvent.CLICK, clickHandler);
}
}
//归位按钮的鼠标点击事件
private function clickHandler(e:MouseEvent):void
{
//当前点击的对象隐藏,也就是归位按钮隐藏
e.currentTarget.visible = false;
//num判断的数值归0,以便于再次判断拼图拼对了几个
num = 0;
//for为mci对象添加隐藏属性为true,x、y坐标为初始坐标,被拼图的对象停止播放在第一帧上面
for (var i:int = 0; i < 4; i++)
{
this["mc" + i].visible = true;
this["mc" + i].x = arr[i*2];
this["mc" + i].y = arr[i * 2 + 1];
this["mc_" + i].gotoAndStop(1);
}
}
}
}