鼠标控制 as3 MovieClip的移动

移动

复制内容到剪贴板
代码:
var dx,dy;
var target_x,target_y;
var speed=5;
stage.addEventListener(MouseEvent.MOUSE_DOWN,handle)
addEventListener(Event.ENTER_FRAME,enterframe)
function handle(e)
{
        target_x=stage.mouseX
        target_y=stage.mouseY
        var jiaodu=taget_xy_to_jiaodu(mc.x,mc.y, target_x,target_y);
        jiaodu_to_dxdy(jiaodu)
}

function enterframe(e)
{
        if(distance(mc.x,mc.y,target_x,target_y)<15)
        {
                dx=0;
                dy=0;
        }
        mc.x=mc.x+dx;
        mc.y=mc.y+dy;
       
       
}
function jiaodu_to_dxdy($jiaodu:Number)
{
                dx = Math.cos($jiaodu/180*Math.PI)*speed;
                dy = Math.sin($jiaodu/180*Math.PI)*speed;
}
function distance(x1:int,y1:int,x2:int,y2:int):Number
{
        return Math.sqrt((y2-y1)*(y2-y1)+(x2-x1)*(x2-x1))
}
                               
function taget_xy_to_jiaodu($x0:int,$y0:int,$x:int,$y:int):Number
{
        var a:Number;
        if ($x0-$x<=0)
        {
                a=-Math.atan(($y-$y0)/($x0-$x))*180/Math.PI;
        } else
        {
                a=180-Math.atan(($y-$y0)/($x0-$x))*180/Math.PI;
        }
                       
        if(a==-90||a==90)
        {
                return taget_xy_to_jiaodu($x0,$y0,$x+1,$y)
        }
        if(!isNaN(a))
                return a;
        else
                return 0;
}
[ 本帖最后由 wizim 于 2008-4-9 18:07 编辑 ]
附件
green.fla (45 KB)

2008-4-9 18:07, 下载次数: 11

green.swf (970 Bytes)

2008-4-9 18:07, 下载次数: 33

 

关于角度计算倒是有一个小经验,就是可以用Math的这个函数:Math.atan2(y,x),它返回的是数学里直角坐标上-Pi到+Pi的角度(逆时针方向),这个角度可以直接代入三角函数中计算速度的x y分量,就不用上下或左右的if去判断了

Math.atan2的用法在我的博客里有,想了解的可以看一下,Math.atan2不错,值得做游戏的人看一下!

摘自:http://bbs.actionscript3.cn/thread-5497-1-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值