0

这是迄今为止我获得的单个坠落物体的代码。'DangerIN' 是坠落对象的实例名称。该类被命名为“危险”。那么我怎样才能让它循环,让它连续下降,当它达到某个 y 值时,它会自行移除它。我也想要不止一个(大约 5 个)物体一次掉下来。

var randomX:Number = Math.random() * 550;
DangerIN.x = randomX;
DangerIN.y = 96;

var speed:Number = Math.random()*10;

DangerIN.addEventListener(Event.ENTER_FRAME, moveDown);

function moveDown(e:Event):void {
    e.target.y += speed; 

    if(e.target.y >= 610) {
        DangerIN.removeEventListener(Event.ENTER_FRAME, moveDown);
    }
}
4

2 回答 2

0

要删除自身,您可以在 removeEventListener() 之后添加以下行:

parent.removeChild(this);

但这并不漂亮,您可能应该以正确的方式进行操作:

将所有 Danger 对象存储在数组中,在 Danger 类中创建一个函数,如 go()、moveDown() 或其他东西:

public function go():void
{
    y+= speed;
}

并在您创建危险对象的类中进行如下循环:

private function loop():void
{
    for (var i:int = dangerObjArray.lenght - 1; i >= 0; i--)
    {
      dangerObjArray[i].go();

      if (dangerObjArray[i].y >= maxY)
         dangerObjArray.splice(i , 1);
    }
}
于 2013-08-23T08:02:55.140 回答
0

这很简单。但要做到这一点,你首先需要一个下降的东西数组,然后e.target一旦它低于你的阈值,你需要重新定位到顶部。

function moveDown(e:Event):void {
    e.target.y += speed;
    if (e.target.y >= 610) {
        // reposition
        e.target.x=math.random()*550;
        e.target.y=96;
    }
}

将此功能分配给您想要跌倒、到达底部并重新出现的每个对象。

于 2013-08-23T07:30:28.517 回答