Actionscript 3 我怎样才能使用;“轻松”;为了更平滑的拖动?

Actionscript 3 我怎样才能使用;“轻松”;为了更平滑的拖动?,actionscript-3,Actionscript 3,我有一个叫做“盒子”的拖拽mc,但是拖拽一点也不顺利 那么,如何使用“ease”var使其更平滑呢 我尝试在任何地方使用“/ease”,但不是工作 var topY:int = stage.stageHeight - box.height; var botY:int = 0; box.addEventListener(MouseEvent.MOUSE_DOWN, onDown); box.addEventListener(MouseEvent.MOUSE_UP, onUp); var con

我有一个叫做“盒子”的拖拽mc,但是拖拽一点也不顺利

那么,如何使用“ease”var使其更平滑呢

我尝试在任何地方使用“/ease”,但不是工作

var topY:int = stage.stageHeight - box.height;
var botY:int = 0;


box.addEventListener(MouseEvent.MOUSE_DOWN, onDown);
box.addEventListener(MouseEvent.MOUSE_UP, onUp);
var constrainY:Rectangle = new Rectangle(box.x, topY ,0, box.y+ (box.height-stage.stageHeight)  );
var dragxy:String = "";
function onDown(e:MouseEvent):void
{
    dragxy = mouseX + "_" + mouseY;
    e.currentTarget.startDrag(false, constrainY);
    removeEventListener(MouseEvent.MOUSE_DOWN, onDown);
    addEventListener(MouseEvent.MOUSE_UP, onUp);
}
function onUp(e:MouseEvent):void
{
    e.currentTarget.stopDrag();
    addEventListener(MouseEvent.MOUSE_DOWN, onDown);
    removeEventListener(MouseEvent.MOUSE_UP, onUp);
}

放松功能的一个简单示例是:

private function easeTo(obj:MovieClip,currentGoalx:Number,currentGoaly:Number,easeFac:Number):void{
    obj.x += (currentGoalx-obj.x)/easeFac;
    obj.y += (currentGoaly-obj.y)/easeFac;
}
首先,您需要在舞台上添加一个计时器或输入帧循环,例如:

addEventListener(Event.ENTER_FRAME,enterFrame);
然后在enterFrame函数中执行以下操作:

private function enterFrame(e:Event):void{
    easeTo(box,stage.mouseX,stage.mouseY,3);
}
与2的easeFac相比,3的easeFac更慢、更平滑,4的easeFac更平滑、更柔和


或者类似的。其思想是,obj在每次函数调用时都会达到目标距离的一半。因此,如果在每一帧上调用此函数,您将获得平滑的“轻松”效果。如果您将currentGoal设置为鼠标位置,则obj将跟随鼠标,但不会以1:1的比例匹配,相反,它将落后并顺利追赶。

不清楚您在寻求什么帮助。您是否希望长方体跟随鼠标,但在其后面跟踪并轻松进入其最终位置?或者你想让盒子有更高的帧速率,这样看起来就不会那么起伏?另外,你说你想使用var-ease。。。这不是一件事,所以你必须更好地解释你想做什么。您可能希望长方体以“轻松”动画跟随鼠标,在这种情况下,
startDrag
是错误的方法。您需要编写一个easing函数或使用在线可用的许多库中的一个。您好Neal Davis,我如何在代码中实现?现在我添加了关于帧事件的部分,以防您不知道如何制作帧事件侦听器。它说的是未定义的属性currentGoal。抱歉。修好了。应为currentGoaly和currentGoalx