flash(as)
发布时间:2024-04-14 08:03:44 编辑: 来源:
导读 大家好,小杨来为大家解答以上问题,flash,as很多人还不知道,现在让我们一起来看看吧! 在网上看到某个游戏既要拖拽mc又要旋转mc,拖...
大家好,小杨来为大家解答以上问题,flash,as很多人还不知道,现在让我们一起来看看吧!
在网上看到某个游戏既要拖拽mc又要旋转mc,拖拽用鼠标事件实现,而旋转需要用shift+鼠标click事件。总觉得太麻烦了。故而希望自己能找到一种只用鼠标就能同时实现拖拽与旋转功能的方法。 结果发现MOUSE_DOWN+MOUSE_UP竟然相当于一次CLICK事件。即每次释放鼠标左键,停止拖拽时,mc会旋转一次,而这个显然不是预期的效果。 于是,开始明白了,那个程序员为什么要添加shift键的侦听了。 可是,不用shift键就不能实现这种功能吗?开始考虑如何区分MOUSE_DOWN+MOUSE_UP与CLICK.。 方法一:设置时间间隔。时间不太好把握,pass掉。 方法二:用鼠标的相对位置。倘若mc未移动则视为click事件。正解! 复制代码 代码如下: package{ import flash.display .*; import flash.geom .Point; import flash.events.*; public class main extends Sprite{ private var mc:MC; private var clickOffset:Point; private var mouseLoc:Point; public function main(){ mc=new MC(); addChild(mc); mc.x=200; mc.y=200; mc.addEventListener(MouseEvent.CLICK ,rot); mc.addEventListener(MouseEvent.MOUSE_DOWN,startdrag); mc.addEventListener(Event.ENTER_FRAME. ,drag); stage.addEventListener(MouseEvent.MOUSE_UP,stopdrag); } private function startdrag(e:MouseEvent ){ mouseLoc=new Point(e.stageX,e.stageY); clickOffset=new Point(e.stageX-mc.x,e.stageY-mc.y); } private function drag(e:Event){ if(clickOffset==null) return; mc.x=mouseX-clickOffset.x; mc.y=mouseY-clickOffset.y; } private function stopdrag(e:MouseEvent ){ clickOffset=null; } private function rot(e:MouseEvent){ if(!mouseLoc.equals(new Point(e.stageX,e.stageY)))return; mc.rotation+=30; } } }本文到此结束,希望对大家有所帮助。
免责声明:本文由用户上传,如有侵权请联系删除!
下一篇:最后一页
猜你喜欢
热点推荐
精选文章
- 小米电视A55/A65竞争版在中国发售
- 全新JBL音箱3和Charge 5扬声器推出 带Wi-Fi连接
- Twitter改进了消息传递 准备好了语音和视频通话支持
- 新研究揭示了间皮瘤的发展方式
- WhatsApp又多了一张王牌 这是编辑消息的选项
- 性别歧视可能使女性大脑的某些部分变薄
- 发现通过恢复关键脑节律来对抗抑郁症的潜力
- 三星为Galaxy S23推出官方柴油品牌外壳
- 谷歌的Windows附近共享应用程序现已在全球范围内推出
- 研究揭示了肿瘤中DNA环的神秘进化
- 前所未有的基因调控观点
- 发现多发性硬化症的关键生物学途径
- 在大分子水平上阐明酶进化的奥秘
- 研究人员开发基于光子纤维素纳米晶体的柔性汗液传感器
- WhatsApp终于让一些用户忽略了垃圾电话