将动画片段移向鼠标但停止短片

时间:2011-06-24 06:01:57

标签: flash actionscript-3

我正在尝试使用不同的控制方案来处理我正在处理的事情,我现在已经制作了这样一个动画片段可以跟随我的鼠标光标。我的问题是它来了并且正好位于光标的位置(因为它'应该')。我希望在光标周围有一个大约10px的半径,动画片段会停在那里,以便它朝向光标但是停止短路。我能想到的唯一方法是使用碰撞检测,但这似乎是一条非常笨拙的路线。

这是我的代码将movieclip移向鼠标:

这是在ENTER_FRAME上运行

var dx:Number = stage.mouseX - this.x;
var dy:Number = stage.mouseY - this.y;
this._vx = Math.cos(Math.atan2(dy, dx)) * this._speed;
this._vy = Math.sin(Math.atan2(dy, dx)) * this._speed;
this.x += this._vx;
this.y += this._vy;

2 个答案:

答案 0 :(得分:4)

为什么不使用Pythagoras theorem检查距离?

var a:Number = stage.mouseX - x;
var b:Number = stage.mouseY - y;

var dist:Number = Math.sqrt(a*a + b*b);
if(dist > 10)
{
    _vx = Math.cos(Math.atan2(b, a)) * _speed;
    _vy = Math.sin(Math.atan2(b, a)) * _speed;
    x += _vx;
    y += _vy;
}

答案 1 :(得分:0)

包{     进口com.Ball;     import flash.display.Sprite;     import flash.events.Event;

public class Main extends Sprite {
    private var bal:Ball;
    private var easing:Number=.3;

    public function Main():void {
        init();
    }
    private function init():void {
        bal=new Ball(8,Math.random() * 0xffffff);
        addChild(bal);
        addEventListener(Event.ENTER_FRAME,animAction);
    }
    private function animAction(e:Event):void {
        var dx:Number=mouseX - bal.x;
        var dy:Number=mouseY - bal.y;
        var ax:Number=dx * easing;
        var ay:Number=dy * easing;
        bal.x+= ax;
        bal.y+= ay;
    }
}

}