AS实现鼠标拖拽与旋转MC
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-07
在网上看到某个游戏既要拖拽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; } } } 关键词: |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于AS实现鼠标拖拽与旋转MC的所有评论