一旦它落到场景的底部,如何在闪存AS3中循环掉落物体

时间:2013-08-23 07:23:00

标签: actionscript-3 flash

这是我到目前为止单个下降对象的代码。 'DangerIN'是落下的对象的实例名称。该课程被命名为“危险”。那么我怎么能让它循环所以它连续下降,当它达到某个y值时它会自动删除它。此外,我想要不止一个(abount 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);
    }
}

2 个答案:

答案 0 :(得分: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;
    }
}

将此功能分配给您想要摔倒的每个物体,到达底部并重新显示。

答案 1 :(得分:0)

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

parent.removeChild(this);

但它并不漂亮,你可能应该以正确的方式:

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

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

并在创建Danger对象的类中创建如下循环:

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);
    }
}