zoukankan      html  css  js  c++  java
  • as3用鼠标拖动图形拼图——灰常简单的教程

    话说这种效果在课件里面经常用到,鼠标拖动事件,一个运用很频繁的事件,一起学习学习吧
    首先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. //临时容器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. }
    复制代码

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

    早日成为大神

  • 相关阅读:
    elementUI .native修饰符
    JS密码强度检测
    HighChart中的tooltip的第一行数字明显比其他的字要小
    HighChart 不同颜色(柱状图)
    .NET(C#、VB)APP开发——Smobiler平台控件介绍:SliderView控件
    .NET(C#、VB)APP开发——Smobiler平台控件介绍:SignatureButton控件
    .NET(WinCE、WM)转Android开发——Xamarin和Smobiler对比
    MobileForm控件的使用方式-用.NET(C#)开发APP的学习日志
    你用.NET开发APP时,在云平台打包APP要填个“包名”的含义
    基于.NET的APP开发和Windows开发,异步回调差别
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3162810.html
Copyright © 2011-2022 走看看