删除循环中创建的对象的计时器

时间:2011-05-19 11:26:20

标签: flash timer flash-cs5 actionscript-3

我想删除使用计时器在循环中创建的对象。

var timer:Timer = new Timer(2000);
timer.addEventListener(TimerEvent.TIMER, voegtoe);

在函数voegtoe中我添加了一个名为man的Movieclip对象:

man.x=Math.random()*650;
man.y=Math.floor(Math.random()*(70))+350;
addChild(man);

我想在2秒后删除此对象。问题是有多个“人”对象。

有人可以帮帮我吗?

感谢。

4 个答案:

答案 0 :(得分:1)

将Movieclip对象保存在数组中会使以后更容易引用。

var man:Array = new Array();

for (var i:int=0; i<10;i++)
{ 
  man[i] = new Movieclip();
  man[i].x=Math.random()*650;
  man[i].y=Math.floor(Math.random()*(70))+350;
  addChild(man[i]);
}

现在您可以参考您的mc所在的阵列位置:

function removeMC(id:int):void
{
  removeChild(man[id])
}

答案 1 :(得分:0)

您在寻找setTimeout功能吗?

man.x=Math.random()*650;
man.y=Math.floor(Math.random()*(70))+350;
addChild(man);

将计时器设置为:

setTimeout(removeMan, 1000);

将被调用的函数定义为:

function removeMan():void
{
  removeChild(man)
}

它可能更容易,但即使是liveocs建议使用Timer对象(如在nelsond的回答中)。

答案 2 :(得分:0)

这可以通过几种不同的方式完成。

我的建议是你为男人准备了一堂课。在这个类中,你有一个启动removeTimer的函数,并且应该在创建man时触发。当2秒钟结束时,我们删除事件Listener并将其从父母身上删除。

添加男人的计时器应该是你想要实例化你男人的任何课程。

这是一个例子

public function initMyTimer() 
{
    var timer:Timer = new Timer(2000);
    timer.addEventListener(TimerEvent.TIMER, voegtoe);
    timer.start();
}

public function voegtoe(e:TimerEvent):void
{
    trace ('set me up');
    var man:Man = new Man;
    man.x=Math.random()*650;
    man.y=Math.floor(Math.random()*(70))+350;
    addChild(man);
    man.setMyRemoveTimer();
}

现在你的Man类应该有这些函数来处理删除。请注意,我们在上面的代码中调用了setMyRemoveTimer。你可以在构造函数中调用该函数,但我想在这里显示链接,所以我把它放在上面的代码中。该函数将存在于Man类中:

public function setMyRemoveTimer():void
{
    var removeTimer:Timer =  new Timer(2000,1);
    removeTimer.addEventListener(TimerEvent.TIMER_COMPLETE, removeMe);
    removeTimer.start();
}


public function removeMe(e:TimerEvent):void
{
    var removeTimer:Timer = e.target as Timer;
    removeTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, removeMe);
    this.parent.removeChild(this);
}

这只是一个建议,很多方法都可以做到这一点。如果你创造了很多男人,我认为拿着这些男人的阵列的想法是一个很好的建议。

但是这里的概念是,如果计时器是Man类的成员,则eventHandler将有权从其父级中移除侦听器以及man。

我不认为这是一个理想的实现,但我试图尽可能地匹配你当前的设计 - 我不想进入数组来教这个概念。

答案 3 :(得分:0)

引用许多男性的一种简单方法是使用name属性并调用每个man.name="man"+i;

然后使用getChildByName("man"+5)检索您想要的任何动画片段。