1

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

buttonL2_btn.addEventListener(MouseEvent.CLICK,左);

功能左(事件:事件):无效{

      box_mc.x =241.5;
}

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

4

3 回答 3

4

在您的示例中,您只是在按下某个按钮时设置它的 X 位置,当您需要将 X 更改为 EnterFrame 事件时,如下所示:

this.addEventListener(Event.ENTER_FRAME, move);

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

您的 box_mc 应根据您的帧速率向左移动 5 个像素。


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

于 2013-01-10T15:54:17.637 回答
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;
}

将以设定的平滑度将您的盒子对象移动/缓和到所需的位置。

于 2013-01-11T14:24:05.987 回答
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;直到它与 dest 数匹配

于 2013-01-10T17:45:08.027 回答