话说这种效果在课件里面经常用到,鼠标拖动事件,一个运用很频繁的事件,一起学习学习吧

首先SWF贡献给大家看看效果

感觉咋样,原理其实还蛮简单的,做做试试吧

下面来看看源码吧

  1. package
  2. {
  3. import flash.display.MovieClip;
  4. import flash.display.Sprite;
  5. import flash.events.Event;
  6. import flash.events.MouseEvent;
  7. public class Main extends MovieClip
  8. {
  9. //声明一个mc变量当临时的容器
  10. private var mc;
  11. //声明一个数组用来存储拖动元件的初始坐标
  12. private var arr:Array = new Array();
  13. //声明一个num数字,用来判断所有图形是否都已经对好了
  14. private var num:uint = 0;
  15. public function Main()
  16. {
  17. //for为所有拖动的对象添加鼠标手型和鼠标按下事件
  18. for (var i:int = 0; i < 4; i++)
  19. {
  20. //为所有对象添加鼠标手型
  21. this["mc" + i].buttonMode = true;
  22. //为所有对象添加按下事件
  23. this["mc" + i].addEventListener(MouseEvent.MOUSE_DOWN, downHandler);
  24. //http://www.shengshiyouxi.com把所有对象的初始坐标存储进数组里面
  25. arr.push(this["mc" + i].x, this["mc" + i].y);
  26. }
  27. //归位按钮在开始时候隐藏
  28. gw_btn.visible = false;
  29. }
  30. //鼠标按下的方法
  31. private function downHandler(e:MouseEvent):void
  32. {
  33. //临时容器mc赋值为当前按下的对象
  34. mc = e.currentTarget;
  35. //开始拖动mc
  36. mc.startDrag();
  37. //把mc对象移动到最上层,这样就不会出现拖动的对象处于未拖动对象的下方了
  38. addChild(mc);
  39. //用stage监听鼠标抬起事件
  40. stage.addEventListener(MouseEvent.MOUSE_UP, upHandler);
  41. }
  42. //stage鼠标抬起的方法
  43. private function upHandler(e:MouseEvent):void
  44. {
  45. //mc对象停止拖动
  46. mc.stopDrag();
  47. //移除stage的鼠标抬起监听事件
  48. stage.removeEventListener(MouseEvent.MOUSE_UP, upHandler);
  49. //声明uint类型的变量n并赋值为mc对象的名字的第2位往后面的数值,这一步是为了取值被对图的对象的编号
  50. var n:uint = uint(String(mc.name.substr(2)));
  51. //if语句判断,如果mc碰撞到了对图对象mc_i时执行
  52. if (mc.hitTestObject(this["mc_" + n]))
  53. {
  54. //mc隐藏
  55. mc.visible = false;
  56. //被碰撞到的mc_i对象停止播放在第二帧上(第二帧就是对图对象的完整界面)
  57. this["mc_" + n].gotoAndStop(2);
  58. //判断的值num加加,用来判断拼图拼对了几次
  59. num++;
  60. }
  61. //如果没有碰撞到mc_i对象
  62. else
  63. {
  64. //mc的x、y坐标等于数组里面存储的初始坐标,为啥会乘以2呢,你可以自己研究一下
  65. mc.x = arr[n*2];
  66. mc.y = arr[n*2+1];
  67. }
  68. //清空mc对象
  69. mc = null;
  70. //if语句判断,如果num等于4(有四个被拼图的对象,所以这里的判断值为4)
  71. if (num == 4)
  72. {
  73. //归位按钮gw_btn显示
  74. gw_btn.visible = true;
  75. //为归位按钮添加按钮点击事件
  76. gw_btn.addEventListener(MouseEvent.CLICK, clickHandler);
  77. }
  78. }
  79. //归位按钮的鼠标点击事件
  80. private function clickHandler(e:MouseEvent):void
  81. {
  82. //当前点击的对象隐藏,也就是归位按钮隐藏
  83. e.currentTarget.visible = false;
  84. //num判断的数值归0,以便于再次判断拼图拼对了几个
  85. num = 0;
  86. //for为mci对象添加隐藏属性为true,x、y坐标为初始坐标,被拼图的对象停止播放在第一帧上面
  87. for (var i:int = 0; i < 4; i++)
  88. {
  89. this["mc" + i].visible = true;
  90. this["mc" + i].x = arr[i*2];
  91. this["mc" + i].y = arr[i * 2 + 1];
  92. this["mc_" + i].gotoAndStop(1);
  93. }
  94. }
  95. }
  96. }

复制代码

最后送上我的祝福:祝大家











早日成为大神








as3用鼠标拖动图形拼图——灰常简单的教程的更多相关文章

  1. 看日记学git摘要~灰常用心的教程

    看日记学git linux 命令行 cd ls / ls -a clear mkdir rmdir echo "hi, good day" > hi.txt touch he ...

  2. freemarker常见语法大全,灰常有用!

    由于公司前端使用的技术是freemarker,于是没事就在网上看看别人写的关于freemarker的文章,感觉freemarker灰常简单,比jsp好用,jsp太乱太臃肿了,另外推荐大家看看freem ...

  3. CSharpGL(39)GLSL光照示例:鼠标拖动太阳(光源)观察平行光的漫反射和镜面反射效果

    CSharpGL(39)GLSL光照示例:鼠标拖动太阳(光源)观察平行光的漫反射和镜面反射效果 开始 一图抵千言.首先来看鼠标拖动太阳(光源)的情形. 然后是鼠标拖拽旋转模型的情形. 然后我们移动摄像 ...

  4. jQuery实现鼠标拖动改变Div高度

    最近项目中需要在DashBoard页面做一个事件通知栏,该通知栏固定位于页面底部,鼠标拖动该DIV实现自动改变高度扩展内容显示区域. 以下是一个设计原型,基于jQuery实现,只实现了拖动效果,没有做 ...

  5. 实现鼠标拖动canvas绘制的图片

    不啰嗦上代码: <html> <head> <meta http-equiv="Content-Type" content="text/ht ...

  6. JavaScript 实现鼠标拖动元素

    一.前言 最开始实现鼠标拖动元素的目的就是在一个页面上拖动很多小圆点,用于固定定位,然后在复制HTML,粘贴在页面的开发代码中,就是这么一个功能,实现了很多遍,都没有做好,不得已采用了jQuery.f ...

  7. Selenium2学习-027-WebUI自动化实战实例-025-JavaScript 在 Selenium 自动化中的应用实例之三(页面滚屏,模拟鼠标拖动滚动条)

    日常的 Web UI 自动化测试过程中,get 或 navigate 到指定的页面后,若想截图的元素或者指定区域范围不在浏览器的显示区域内,则通过截屏则无法获取相应的信息,反而浪费了无畏的图片服务器资 ...

  8. listbox鼠标拖动数据和为button注册快捷键

    将listbox1中的数据用鼠标拖动至listbox2,即有左至右. 分别对应控件注册如下事件DragEnter,MouseDown,DragDrop 代码如下: //P128 DataGridVie ...

  9. c# 利用 两个TREEVIEW控件完成TEENODE的鼠标拖动操作

    功能说明: 我们有两个TREEVIEW控件——TREEVIEW1,TREEVIEW2.Treeview1内有三个NODE,Treeview2内有三个NODE.将Treeview1内的NODE拖动到Tr ...

随机推荐

  1. HTML5新属性-----拖放

    最早引入JS拖放功能的是IE4,当时,网页中只有两种对象可以拖放:图像和某些文本.拖动图像时,把鼠标放在图像上,按住鼠标不放就可以拖动它.拖动文本时,需要选中文本,然后可以像拖动图像一样拖动被选中的文 ...

  2. Mono For Android中AlarmManager的使用

    最近做了一个应用,要求如下: 程序运行之后的一段时间,分别触发3个不同的事件.当然很快就想到了Android中的AlarmManager和BroadcastReceiver.但是毕竟Mono环境和Ja ...

  3. 客户端数据持久化解决方案: localStorage

    客户端数据持久化解决方案: localStorage localStorage主要用来替代cookie,解决cookie读写困难.容量有限的问题. localStorage有以下几个特点 localS ...

  4. POJ 3111 K Best(二分答案)

    [题目链接] http://poj.org/problem?id=3111 [题目大意] 选取k个物品,最大化sum(ai)/sum(bi) [题解] 如果答案是x,那么有sigma(a)>=s ...

  5. spring security执行流程图

    今天看到非常多人转载了这篇文章,这里备注一下.原文来自CSDN我的博客. 近期在研究spring security的配置,研究了一个星期了,在官网看了下.仅仅配置出来了简单的登录,但不知如何从数据库读 ...

  6. poj1487

    题目大意: 给一棵递归树,看链接图片,从根节点开始对于每个节点往它的子节点移动,直到叶子节点停止.每个节点选哪一个孩子节点继续往下走是随机的(等概率).然后叶子节点都会标记一个数值,记为走到该节点的得 ...

  7. 小鱼提问3 static方法中可以访问某个类的私有变量吗(不通过反射的其他非正常手段)?什么情况下可以?

    class Student { private string _name; public int Age = 0; public static void Test() { Student stu = ...

  8. 怎样在超级终端和PC之间通过串口传输文件

    Windows环境下,通过SecureCRT软件,用串口向ARM开发板发送文件: 输入命令 rz,可以看到如下图所示: 选择路径点击上传即可. 如果是想从Arm开发板中把文件Down下来,则可以按照下 ...

  9. iOS移动支付——支付宝支付

    这篇博客总结得很好,我只对在iOS上集成支付宝做简洁的步骤总结. http://www.it165.net/pro/html/201402/9376.html iOS集成支付宝支付的步骤: 准备工作的 ...

  10. javscript上传图片前预览的方法setPreViewImage()

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...