flash 方向箭头

前几天一个3D项目上要运用到 方向箭头(鼠标往哪移,箭头就转动一定的角度指向哪)!!

 

demo: http://6921.ggii.net/swf/ok.swf

 

操作是: 按下鼠标,并且移动鼠标观察效果!

 

 

下面将其代码贴出来:

 

 

 

MC是箭头影片剪辑   实例为arro

Circle 是一个转动的园  按下鼠标,固定在按下点处 实例 circle

 

 

 

代码是在时间轴上写的:

 

 

 

var arro:Sprite= Sprite(new MC());
var circle:MovieClip= MovieClip(new Circle());
arro.name="arro";
circle.name="circle";
stage.addEventListener(MouseEvent.MOUSE_DOWN,onDown,false,1,true);
stage.addEventListener(MouseEvent.MOUSE_UP,onUp,false,1,true);
stage.addEventListener(MouseEvent.MOUSE_MOVE,onMove,false,1,true);

addEventListener(Event.ENTER_FRAME,onFrame,false,1,true);


var tx,ty,gx,gy:int;
var isDown:Boolean;

function onDown(e:MouseEvent) {

 isDown=true;

 tx=e.stageX;
 ty=e.stageY;
 Mouse.hide();
 addChild(circle);
 positionCircle(tx,ty);
}

function onUp(e:MouseEvent) {
 graphics.clear();
 isDown=false;
 Mouse.show();
 if (getChildByName(circle.name)!=null) {
  removeChild(circle);
 }
 if (getChildByName(arro.name)!=null) {
  removeChild(arro);
 }

}


function onMove(e:MouseEvent) {
 gx=e.stageX;
 gy=e.stageY;
 if (isDown) {
  addChild(arro);
  arro.x=gx;
  arro.y=gy;
 }

}

function positionCircle(tx:int,ty:int) {
 circle.x=tx;
 circle.y=ty;


}

 


function onFrame(e:Event) {

 

 // 处理鼠标旋转
 var disX:int=gx-tx;
 var disY:int=gy-ty;

 var angle:Number=Number(Math.atan(disY/disX)*180/Math.PI);// atan返回的是弧度值,要转换为角度值

 

 //if (disX == 0) {  这里不需要处理  这点是特殊点 可以忽略不计
 //if(disY>=0){
 //
 //angle=90}else{
 //
 //angle=270
 //
 //
 //
 //}
 //}

 //

 

 

 if (disX>0) {

  //do nothing
 }
 if (disX<0) {


  angle=angle+180;


 }
 arro.rotation=angle
 
 
 
 
 
 
 //  draw line


 if (isDown) {
  graphics.clear();
  graphics.moveTo(tx,ty);
  graphics.lineStyle(3,0xFFFFFF);
  graphics.lineTo(gx,gy);
  trace("ok");
 }

 

 

 

 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值