当前位置: 移动技术网 > IT编程>UI设计>设计软件 > FLASH AS鼠标拖拽与旋转MC教程

FLASH AS鼠标拖拽与旋转MC教程

2019年03月19日  | 移动技术网IT编程  | 我要评论

在网上看到某个游戏既要拖拽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;

}
}
}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网