as3用鼠标拖动图形拼图——灰常简单的教程
发布日期:2021-08-18 20:58:50 浏览次数:1 分类:技术文章

本文共 2190 字,大约阅读时间需要 7 分钟。

话说这种效果在课件里面经常用到,鼠标拖动事件,一个运用很频繁的事件,一起学习学习吧
首先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. //把所有对象的初始坐标存储进数组里面
  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. //临时容器mc赋值为当前按下的对象
  33. mc = e.currentTarget;
  34. //开始拖动mc
  35. mc.startDrag();
  36. //把mc对象移动到最上层,这样就不会出现拖动的对象处于未拖动对象的下方了
  37. addChild(mc);
  38. //用stage监听鼠标抬起事件 
  39. stage.addEventListener(MouseEvent.MOUSE_UP, upHandler);
  40. }
  41. //stage鼠标抬起的方法
  42. private function upHandler(e:MouseEvent):void 
  43. {
  44. //mc对象停止拖动
  45. mc.stopDrag(); 
  46. //移除stage的鼠标抬起监听事件
  47. stage.removeEventListener(MouseEvent.MOUSE_UP, upHandler);
  48. //声明uint类型的变量n并赋值为mc对象的名字的第2位往后面的数值,这一步是为了取值被对图的对象的编号
  49. var n:uint = uint(String(mc.name.substr(2))); 
  50. //if语句判断,如果mc碰撞到了对图对象mc_i时执行
  51. if (mc.hitTestObject(this["mc_" + n])) 
  52. {
  53. //mc隐藏
  54. mc.visible = false;
  55. //被碰撞到的mc_i对象停止播放在第二帧上(第二帧就是对图对象的完整界面)
  56. this["mc_" + n].gotoAndStop(2);
  57. //判断的值num加加,用来判断拼图拼对了几次
  58. num++;
  59. }
  60. //如果没有碰撞到mc_i对象
  61. else 
  62. {
  63. //mc的x、y坐标等于数组里面存储的初始坐标,为啥会乘以2呢,你可以自己研究一下
  64. mc.x = arr[n*2];
  65. mc.y = arr[n*2+1]; 
  66. }
  67. //清空mc对象
  68. mc = null; 
  69. //if语句判断,如果num等于4(有四个被拼图的对象,所以这里的判断值为4)
  70. if (num == 4)
  71. {
  72. //归位按钮gw_btn显示
  73. gw_btn.visible = true;
  74. //为归位按钮添加按钮点击事件
  75. gw_btn.addEventListener(MouseEvent.CLICK, clickHandler);
  76. }
  77. //归位按钮的鼠标点击事件
  78. private function clickHandler(e:MouseEvent):void 
  79. {
  80. //当前点击的对象隐藏,也就是归位按钮隐藏
  81. e.currentTarget.visible = false;
  82. //num判断的数值归0,以便于再次判断拼图拼对了几个
  83. num = 0;
  84. //for为mci对象添加隐藏属性为true,x、y坐标为初始坐标,被拼图的对象停止播放在第一帧上面
  85. for (var i:int = 0; i < 4; i++) 
  86. {
  87. this["mc" + i].visible = true;
  88. this["mc" + i].x = arr[i*2];
  89. this["mc" + i].y = arr[i * 2 + 1];
  90. this["mc_" + i].gotoAndStop(1);
  91. }
  92. }
  93. }
  94. }
复制代码

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


转载于:https://www.cnblogs.com/snake-hand/p/3162810.html

转载地址:https://blog.csdn.net/weixin_30906185/article/details/94950252 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:取代Ajax.BeginForm的ajax使用方法
下一篇:反射API

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年03月24日 20时35分36秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章