as3用鼠标拖动图形拼图——灰常简单的教程

2024-06-01 13:58

本文主要是介绍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. }
复制代码
最后送上我的祝福:祝大家

早日成为大神

这篇关于as3用鼠标拖动图形拼图——灰常简单的教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1021203

相关文章

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

vue, 左右布局宽,可拖动改变

1:建立一个draggableMixin.js  混入的方式使用 2:代码如下draggableMixin.js  export default {data() {return {leftWidth: 330,isDragging: false,startX: 0,startWidth: 0,};},methods: {startDragging(e) {this.isDragging = tr

回调的简单理解

之前一直不太明白回调的用法,现在简单的理解下 就按这张slidingmenu来说,主界面为Activity界面,而旁边的菜单为fragment界面。1.现在通过主界面的slidingmenu按钮来点开旁边的菜单功能并且选中”区县“选项(到这里就可以理解为A类调用B类里面的c方法)。2.通过触发“区县”的选项使得主界面跳转到“区县”相关的新闻列表界面中(到这里就可以理解为B类调用A类中的d方法

自制的浏览器主页,可以是最简单的桌面应用,可以把它当成备忘录桌面应用

自制的浏览器主页,可以是最简单的桌面应用,可以把它当成备忘录桌面应用。如果你看不懂,请留言。 完整代码: <!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><ti

Steam邮件推送内容有哪些?配置教程详解!

Steam邮件推送功能是否安全?如何个性化邮件推送内容? Steam作为全球最大的数字游戏分发平台之一,不仅提供了海量的游戏资源,还通过邮件推送为用户提供最新的游戏信息、促销活动和个性化推荐。AokSend将详细介绍Steam邮件推送的主要内容。 Steam邮件推送:促销优惠 每当平台举办大型促销活动,如夏季促销、冬季促销、黑色星期五等,用户都会收到邮件通知。这些邮件详细列出了打折游戏、

python实现最简单循环神经网络(RNNs)

Recurrent Neural Networks(RNNs) 的模型: 上图中红色部分是输入向量。文本、单词、数据都是输入,在网络里都以向量的形式进行表示。 绿色部分是隐藏向量。是加工处理过程。 蓝色部分是输出向量。 python代码表示如下: rnn = RNN()y = rnn.step(x) # x为输入向量,y为输出向量 RNNs神经网络由神经元组成, python

X-AnyLabeling使用教程

1.AI 模型自动分割标注使用教程 2.AI 模型自动目标检测标注使用教程

青龙面板2.9之Cdle傻妞机器人编译教程

看到有的朋友对傻妞机器人感兴趣,这里写一下傻妞机器人的编译教程。 第一步,这里以linux amd64为例,去官网下载安装go语言安装包: 第二步,输入下方指令 cd /usr/local && wget https://golang.google.cn/dl/go1.16.7.linux-amd64.tar.gz -O go1.16.7.linux-amd64.tar.gz

青龙面板部署通用教程,含服务器、路由器、X86等部署方法

1. 拉取镜像/更新镜像 docker pull whyour/qinglong:latest 2. 删除镜像 docker rmi whyour/qinglong:latest 3. 启动容器 普通服务器 docker run -dit \-v $PWD/ql/config:/ql/config \-v $PWD/ql/log:/ql/log \-v $PWD/ql/db:

宝塔面板部署青龙面板教程【简单易上手】

首先,你得有一台部署了宝塔面板的服务器(自己用本地电脑也可以)。 宝塔面板部署自行百度一下,很简单,这里就不走流程了,官网版本就可以,无需开心版。 首先,打开宝塔面板的软件商店,找到下图这个软件(Docker管理器)安装,青龙面板还是安装在docker里,这里依赖宝塔面板安装和管理docker。 安装完成后,进入SSH终端管理,输入代码安装青龙面板。ssh可以直接宝塔里操作,也可以安装ssh连接