as3用鼠标拖动图形拼图——灰常简单的教程
话说这种效果在课件里面经常用到,鼠标拖动事件,一个运用很频繁的事件,一起学习学习吧
首先SWF贡献给大家看看效果
感觉咋样,原理其实还蛮简单的,做做试试吧
下面来看看源码吧
- 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);
- }
- }
- }
- }
复制代码
最后送上我的祝福:祝大家







早日成为大神







as3用鼠标拖动图形拼图——灰常简单的教程的更多相关文章
- 看日记学git摘要~灰常用心的教程
看日记学git linux 命令行 cd ls / ls -a clear mkdir rmdir echo "hi, good day" > hi.txt touch he ...
- freemarker常见语法大全,灰常有用!
由于公司前端使用的技术是freemarker,于是没事就在网上看看别人写的关于freemarker的文章,感觉freemarker灰常简单,比jsp好用,jsp太乱太臃肿了,另外推荐大家看看freem ...
- CSharpGL(39)GLSL光照示例:鼠标拖动太阳(光源)观察平行光的漫反射和镜面反射效果
CSharpGL(39)GLSL光照示例:鼠标拖动太阳(光源)观察平行光的漫反射和镜面反射效果 开始 一图抵千言.首先来看鼠标拖动太阳(光源)的情形. 然后是鼠标拖拽旋转模型的情形. 然后我们移动摄像 ...
- jQuery实现鼠标拖动改变Div高度
最近项目中需要在DashBoard页面做一个事件通知栏,该通知栏固定位于页面底部,鼠标拖动该DIV实现自动改变高度扩展内容显示区域. 以下是一个设计原型,基于jQuery实现,只实现了拖动效果,没有做 ...
- 实现鼠标拖动canvas绘制的图片
不啰嗦上代码: <html> <head> <meta http-equiv="Content-Type" content="text/ht ...
- JavaScript 实现鼠标拖动元素
一.前言 最开始实现鼠标拖动元素的目的就是在一个页面上拖动很多小圆点,用于固定定位,然后在复制HTML,粘贴在页面的开发代码中,就是这么一个功能,实现了很多遍,都没有做好,不得已采用了jQuery.f ...
- Selenium2学习-027-WebUI自动化实战实例-025-JavaScript 在 Selenium 自动化中的应用实例之三(页面滚屏,模拟鼠标拖动滚动条)
日常的 Web UI 自动化测试过程中,get 或 navigate 到指定的页面后,若想截图的元素或者指定区域范围不在浏览器的显示区域内,则通过截屏则无法获取相应的信息,反而浪费了无畏的图片服务器资 ...
- listbox鼠标拖动数据和为button注册快捷键
将listbox1中的数据用鼠标拖动至listbox2,即有左至右. 分别对应控件注册如下事件DragEnter,MouseDown,DragDrop 代码如下: //P128 DataGridVie ...
- c# 利用 两个TREEVIEW控件完成TEENODE的鼠标拖动操作
功能说明: 我们有两个TREEVIEW控件——TREEVIEW1,TREEVIEW2.Treeview1内有三个NODE,Treeview2内有三个NODE.将Treeview1内的NODE拖动到Tr ...
随机推荐
- Zabbix监控Linux主机设置
说明: Zabbix监控服务端已经配置完成,现在要使用Zabbix对Linux主机进行监控. 具体操作: 以下操作在被监控的Linux主机进行,这里以CentOS 6.x系统为例. 一.配 ...
- android apk 导出(签名) is not translated in xx 代码混淆 反编译
apk导出遇到问题 解决方式如下 1.导出步骤第一步 2.提示错误 3.解决 其余步骤参见: 代码混淆和数字签名(现在版本混淆) http://blog.csdn.net/moruna/article ...
- WF编译报错
最近在研究WF的时候,遇到了一个未知的错误,错误信息时这样的 错误 102 扩展“Microsoft.Activities.Build.Validation.ValidationBuildExtens ...
- GDOI模拟赛Round 1
GDOI模拟赛Round 1 数据结构 题目描述:给出一个长度为\(n\)的序列,支持两种操作: 1.对某段区间都加上一个数 2.给出\(p.k\),求下面表示式对\((10^9+7)\)取模 \[\ ...
- EF 6 调用存储过程时返回多结果集和OUTPUT参数问题
原文地址:http://q.cnblogs.com/q/56836/ 各位大侠,提问一个关于EF6调用存储过程时返回多结果集和OUTPUT参数问题 目前已经可以调用存储过程并且可以返回多个结果集. 但 ...
- aix archPlat
#++++++++++++++++++++++++++++++++++++++++++++++++++++ #+ Ruiy(R) Techdiss contact: 150 5519 8367 #+ ...
- AndroidUI 布局动画-为列表添加布局动画效果
新建一个Android project ,使MainActivity 继承自 ListActivity: public class MainActivity extends ListActivity ...
- Struts2 二、为Action的参数注入值
为Action参数注入值,主要使用在的场景为,Action的一个参数的值不是固定的是可以改变的,所以不能直接写在Action中,可以通过Struts配置的方式将值配置到Struts中,然后通过注入的方 ...
- JAVA装饰器模式
Java程序员们应该对java.io对不会陌生,因为java.io包采用了装饰器模式. 一.定义: Decorator装饰器,顾名思义,就是动态地给一个对象添加一些额外的职责,就好比为房子进行装修一样 ...
- TCP协议三次握手过程分析
TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标 ...