AS 3简单易用

时间:2013-01-10 15:50:24

标签: actionscript-3 animation tween

如何移动物体并在物体移动时能够物理地看到它?不只是消失并出现在不同的位置,就像使用以下代码一样。

  

buttonL2_btn.addEventListener(MouseEvent.CLICK,left);

     

function left(event:Event):void {

      box_mc.x =241.5;
}

这会将myObject移动到指定的任何位置,但我希望能够在移动时看到它。

3 个答案:

答案 0 :(得分:4)

在您的示例中,当您需要将X更改为EnterFrame事件时,您只需将其设置为X位置,如下所示:

this.addEventListener(Event.ENTER_FRAME, move);

function move(event:Event):void{
      box_mc.x -= 5
}

你的box_mc应该以你的帧速率向左移动5个像素。


您可以轻松使用缓动库。我强烈推荐TweenMax

答案 1 :(得分:3)

好吧,我有点不耐烦的人不断建议一些补间引擎。当然他们摇滚,但是无助于OP了解他在做什么。

Kircho使用非常简单的补间移动对象我建议在onEnterFrame事件中使用以下代码来移动对象:

addEventListener(Event.ENTER_FRAME, onEnterFrame);
var xGoal:Number = 100;     //::  The target X destination for your object
var yGoal:Number = 100;     //::  The target Y destination for your object
var smothness:Number = 10;  //::  Smoothness factor for movement.  The lower the  value the faster the movement.

function onEnterFrame(e:Event):void
{
      box_mc.x += (xGoal - box_mc.x) / smothness;
      box_mc.y += (yGoal - box_mc.y) / smothness;
}

将设置的平滑度移动/放宽您的盒子对象到所需的位置。

答案 2 :(得分:1)

您可以安装437个可用的补间引擎中的任何一个 或者你可以添加几行代码

设置一个包含目标值的变量

var dest:Number = 241.5; // this is what gets updated on mouse click

在框中的enterframe事件:

function onBoxEnterFrame(e:MouseEvent):void{
  if (dest != box_mc.x){
    var easeNum:Number = 0.4 // between 0 and 1, the higher the number, the slower the transition
    box_mc.x = box_mc.x * easeNum + dest * (1-easeNum);
  }
}

你可以添加更多的线来在关闭位置时捕捉位置(小于0.1差异),或者使用更加线性的变化来逐步调整,如box_mc.x += 5;,直到它与目标数字匹配